Dziedziczenie: czy metody z klasy odziedziczonej rozszerzają się o nową zmienną ?

0

Cześć mam pytanie odnośnie dziedziczenia chodzi o to że klasa Punkt3D dziedziczy Punkt2D natomiast przy próbie użycia metody wyświetla jedynie zmienna x oraz y nie wyświetla zmiennej z która jest w klasie Punkt3D czy nie ma prawa to tak działać czy robię to źle ?

import java.util.Scanner;

public class Rozne {

    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int zmienna1, zmienna2, zmienna3;
        System.out.println("podaj 2 zmienne jakie ustawic dla x i y");
        zmienna1 = read.nextInt();
        zmienna2 = read.nextInt();
        Punkt2D dwaD = new Punkt2D(zmienna1, zmienna2);
        dwaD.wyswietl();
        Punkt2D dwaPuste = new Punkt2D();
        dwaPuste.wyswietl();
        dwaD.wyswietl();

        Punkt3D trzyD = new Punkt3D();
        trzyD.z=50;
        trzyD.x=10;
        trzyD.y=20;
        trzyD.wyswietl();
   }
}

public class Punkt2D {
    int x;
    int y;

    public Punkt2D() {
        x = 0;
        y = 0;
    }

    public Punkt2D(int liczba1, int liczba2) {
        x = liczba1;
        y = liczba2;
    }

    public void wyswietl() {
        System.out.println(x);
        System.out.println(y);
    }

}
public class Punkt3D extends Punkt2D {
    int z;

    public Punkt3D() {
        z = 0;
        y = 0;
        x = 0;

    }

}
0

A jakim cudem ma wyświetlić z jeśli teraz metoda wyswietl dla Punkt3D wygląda tak:

public void wyswietl() {
        System.out.println(x);
        System.out.println(y);
    }

Na klasie Punkt3D nadpisz sobie metodę wyswietl:

public void wyswietl() {
super();
        System.out.println(z);
    }

i powinno działać.
Tak w ogóle to używaj zmiennych private z getterami i setterami.

0
Endrew napisał(a):

A jakim cudem ma wyświetlić z jeśli teraz metoda wyswietl dla Punkt3D wygląda tak:

public void wyswietl() {
        System.out.println(x);
        System.out.println(y);
    }

Na klasie Punkt3D nadpisz sobie metodę wyswietl:

public void wyswietl() {
super();
        System.out.println(z);
    }

i powinno działać.
Tak w ogóle to używaj zmiennych private z getterami i setterami.

Dzięki za pomoc początki nie są łatwe i jeszcze wszystko się miesza ;/

1 użytkowników online, w tym zalogowanych: 0, gości: 1