zadanie z dziedziczeniem

0

Moglby ktos spojrzec czy jest wszystko dobrze ? Wyjasnic mi czemu obiekt "pablo" nie moze byc klasy osobą tylko klasy studentem? Moze dlatego ze nie mam konstruktora odpowiedniego w klasie Osoba ? Tylko ze wtedy taki sam konstruktor wymagany byl w klasie Student, a z tresci zadania klasy posiadają rózne skladowe. Oraz co to znaczy ze " klasa powinna cechowac sie zachowaniami w postaci zaimplementowanej metodzie zwracającej informacje o osobie" ?
Oto tresc: " Zaimplementuj klasę Osoba. Klasa ta powinna umożliwiać przechowywanie takich wartości jak:
imię, nazwisko, data urodzenia, płeć oraz cechować się zachowaniami w postaci
zaimplementowanej metodzie zwracającej informację o osobie. Następnie zdefiniuj klasy
dziedziczące po klasie Osoba:

  1. Student – klasa powinna zawierać następujące składowe:
    a) pola
  • nr indeksu
  • typ studiów
  • kierunek
  • rok studiów
    b) metody
  • zwracającą informację o studencie (należy przesłonić metodę odziedziczoną po klasie osoba).
    Można w tym celu wykorzystać metodę toString()."
package osobydziedziczenieipolimorfizm;

public class Osoba {
    
    private String imie,nazwisko,data_urodzenia,plec;

    public String getImie() {
        return imie;
    }
(...)
    
    public String toString(){
    return "Osoba"+getImie() +getNazwisko() +getData_urodzenia()+ getPlec();
    }
}
package osobydziedziczenieipolimorfizm;

public class Student extends Osoba {
    
   private String nrIndeksu,typStudiow,kierunek,rokStudiow;
   
   
   public Student(String nrIndeksu, String typStudiow, String kierunek, String rokStudiow){
   this.setNrIndeksu(nrIndeksu);
   this.setTypStudiow(typStudiow);
   this.setKierunek(kierunek);
   this.setRokStudiow(rokStudiow);
   }
public String toString(){
return "Student dane:"+ getNrIndeksu()+" " + getTypStudiow()+" " + getKierunek()+" " + getRokStudiow();
}   

    public String getNrIndeksu() {
        return nrIndeksu;
    }
(...)
       
}
package osobydziedziczenieipolimorfizm;

public class OsobyDziedziczenieiPolimorfizm {

    public static void main(String[] args) {
        Osoba angela = new Osoba();
       // angela.setImie("Angelika");
       // System.out.println(angela.toString());
        Osoba pawlo = new Student("112", "Inżynierskie", "Informatyka", "2");
        System.out.println(pawlo.toString());
       //  pawlo = new Osoba("pawel","pipka","1996","M");  // Moje pytanie obiekt "pawlo" nie moze byyc jednoczesnie osobą ? Tylko studentem ?
    }
    
}
8

Uwagi:

  1. nazwy powinny być po angielsku
  2. sformatuj kod
  3. złe typy danych
    data_urodzenia - Date lub LocalDate
    plec - enum
  4. toString() dla studenta powinno wypisywać dane klasy, po której dziedziczy czyli osoby oraz dane studenta - do poprawy. Wskazówka:
 super.toString()+...

Osoba jest to typ bardziej ogólny, osobą może być Andżela, Wiesiek czy Pablo. Natomiast Pablo jest kimś więcej niż tylko osobą, jest zarówno osobą jak i studentem, czyli posiada wszystkie dane jak każda inna osoba plus dane dotyczące studiów. Jest to zgodne z treścią twojego zadania.

0

1,2,3: Ok postaram sie to zrobic nastepnym razem, to bedzie wersja prymitywna.
4: toString() dla studenta powinno wypisywac dane klasy po ktorej dziedziczy, to chyba dziedziczy od Osoby ?

public String toString(){
return "Student dane:"+ super.toString()  + getNrIndeksu()+" " + getTypStudiow()+" " + getKierunek()+" " + getRokStudiow();
} ?

czy jak ?

0

W jaki sposob moge najpierw stworzyc obiekt "pablo" klasy Osoba, a nastepnie wykozystac do klasy Student ? Zrobic konstruktor do klasy Osoba wprowadzając wszystkie dane czy niestety żmudne wpisywanie "pablo.setImie()" itd ?

2

Dodajesz konstruktor do Osoby

 Osoba(String imie ....){...}

Dodajesz konstruktor do Studenta, który wywołuje konstruktor Osoby plus inicjalizuje pola które ma tylko student

 Student(String imie ....){
  super(imie,...)
...}

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