Tworzenie klasy

0

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.

0
System.out.println("autor "+autor.wypisz());

Jeżeli chciałbyś zrobić tak, jak masz, musiałbyś przeciążyć metodę toString() w klasie Osoba i w jej ciele zawrzeć to, co masz w metodzie wypisz.

0

Dodaj do klasy Osoba metode getImie ktora zwraca imie i potem.

[code]
System.out.println("autor "+autor.getImie());
[/code]

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