[Kurs podstawowy]Problem z wyświetleniem danych z klasy

Dyskusje na temat Javy.
tomek
Nowicjusz
Posty: 3
Dołączył(a): środa, 27 czerwca 2012, 19:34

[Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez tomek »

Witam

Dla treningu chciałem stworzyć program "dowod osobisty", który składa się z klasy idCard oraz klasy data. Wynik kompilacji poniższego kodu jest następujący:

Code: Zaznacz cały

run:
D: 12 M: 3 R: 1933
ID CARD
N: Mosiek
Du: alan.data@e53108
Dwy: alan.data@f62373
Dwa: alan.data@19189e1
Chodzi mi o wartości Du, Dwy, Dwa. Są jakby zablokowane. Dlatego, że klasa idCard musi dziedziczyć z klasy data? Gdy robię dziedziczenie to czepia się do konstruktora, który ma niby być (int, int, int) a ja przecież potrzebuję (string, data, data, data). Proszę o pomoc i wytłumaczenie.


A tutaj sam kod:

Code: Zaznacz cały

package alan;

public class Main {

    
    public static void main(String[] args) {
        
        String nazwisko = "brak";
        int d=0; 
        int m=0; 
        int r=1900;
        
        data nowa = new data(d,m,r);
        idCard id = new idCard(nazwisko,nowa,nowa,nowa);
        
        nowa.input(12, 3, 1933);
        nowa.display();
        
        data urodzenia = new data(12,3,1990);
        data wydania = new data(15,3,1990);
        data waznosci = new data(15,3,2000);
        
        id.input("Mosiek", urodzenia, wydania, waznosci);
        
        id.display();
    }
}

class data {
    
    public data(int dzien, int miesiac, int rok) {
        this.dzien = dzien;
        this.miesiac = miesiac;
        this.rok = rok;
    }
    
    public void input(int dzien2, int miesiac2, int rok2) {
        this.dzien = dzien2;
        this.miesiac = miesiac2;
        this.rok = rok2;
    }
    
    public void display() {
        System.out.println("D: "+this.dzien+" M: "+this.miesiac+" R: "+this.rok);
    }
    
    private int dzien,miesiac,rok;
    
}

class idCard {
    
    public void input(String nazwisko2, data urodzenia2, data wydania2, data waznosci2) {
        this.nazwisko = nazwisko2;
        this.urodzenia = urodzenia2;
        this.wydania = wydania2;
        this.waznosci = waznosci2;
    }
    
    
    public void display() {
        System.out.println("ID CARD");
        System.out.println("N: "+this.nazwisko+"\nDu: "+this.urodzenia+"\nDwy: "+
                this.wydania+"\nDwa: "+this.waznosci);
    }
    
    
    public idCard(String n, data u, data w, data wa) {
        this.nazwisko = n;
        this.urodzenia = u;
        this.waznosci = w;
        this.wydania = wa;
    }
    
    private String nazwisko;
    private data urodzenia;
    private  data wydania;
    private  data waznosci;
}
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: [Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez Morfidon »

this.urodzenia wypisze Ci to co zwraca toString w klasie data. Musisz wejść głębiej lub stworzyć funkcję w klasie date, która pozwoli Ci zrobić np. coś takiego: this.urodzenia.getCoStam();
tomek
Nowicjusz
Posty: 3
Dołączył(a): środa, 27 czerwca 2012, 19:34

Re: [Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez tomek »

Chciałbym bez stworzenia dodatkowych funkcji. Jak inaczej "wejść głębiej"? Mógłbyś podać przykład?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: [Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez Morfidon »

wtedy musisz w klasie date ustawić tam gdzie masz zmienne modyfikator z private na public
tomek
Nowicjusz
Posty: 3
Dołączył(a): środa, 27 czerwca 2012, 19:34

Re: [Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez tomek »

Zmieniłem

Code: Zaznacz cały

private int dzien,miesiac,rok;
na

Code: Zaznacz cały

public int dzien,miesiac,rok;
Ciągle dostaję ten sam wynik
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: [Kurs podstawowy]Problem z wyświetleniem danych z klasy

Post przez Morfidon »

po zmianie modyfikatora musisz się przecież odwołać do tych zmiennych... nie odwołujesz się, zamiast funkcji, która wymyśliłem, podajesz nazwę zmiennej.
Post Reply