Mam problem z następującym zadaniem:
Stwórz klasy:
a) Osoba z polami: imie, nazwisko, wiek, konstruktorem inicjującym wszystkie pola oraz metodą Wypisz.
b) Książka z polami: tytul, autor (typu Osoba), oraz metodą Wypisz
Utwórz różne obiekty stworzonych klas. Wykonaj metody Wypisz.
Napisałem:
package zad6a;
/**
*
* @author m1
*/
class Osoba
{
String imie,nazwisko;
int wiek;
public Osoba(String i, String n, int w)
{
imie = i;
nazwisko = n;
wiek = w;
}
public void wypisz()
{
System.out.println("Imie: " +imie);
System.out.println("nazwisko "+nazwisko);
System.out.println("wiek: " +wiek);
}
}
class Ksiazka
{
String tytul;
Osoba autor;
public void wypisz()
{
System.out.println("tytul: " +tytul);
System.out.println("autor "+autor);
}
}
public class Zad6a {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Osoba o1 = new Osoba("Adam", "Nowak", 21);
Osoba o2 = new Osoba("Adam2", "Nowak2", 22);
Osoba o3 = new Osoba("Adam3", "Nowak3", 23);
Ksiazka k1 = new Ksiazka();
Ksiazka k2 = new Ksiazka();
Ksiazka k3 = new Ksiazka();
k1.tytul = "t1";
k2.tytul = "t2";
k1.autor = o1;
o1.wypisz();
o2.wypisz();
k1.wypisz();
}
}
Program zwraca następujace wyniki (wszystkie poprawne, poza ostatnią linią):
Imie: Adam
nazwisko Nowak
wiek: 21
Imie: Adam2
nazwisko Nowak2
wiek: 22
tytul: t1
autor zad6a.Osoba@30c221
Dlaczego program nie zwraca zawartości obiektu o1 przez k1.wypisz()? Przecież metoda wypisz z klasy Ksiazka ma wypisywać też autora, który jest typem Osoba, a do obiektu k1 (pole autor) przypisuje zawartość obiektu o1.
Byłbym wdzięczny za pomoc.