Dziedziczenie, rzutowanie w dół.

0

Siemanko, mam zadanie domowe do zrobienia z wykorzystaniem dziedziczenia oraz rzutowania w dół. Oto moje 3 następujące klasy.

public class Bank {

    LinkedList<Client> ListOfClients = new LinkedList<Client>();

    public void addClient(Client arg){
        ListOfClients.add(arg);
    }

    public void getClients(){
        for(Client c : ListOfClients)
            System.out.printf("Name: %s \nSurname: %s \nPESEL: %s\n", c.name, c.surname, c.PESEL);
    }
}

public class Client {
    LinkedList<Account> ListOfAccounts = new LinkedList<Account>();
    public void addAccount(Account args){
        ListOfAccounts.add(args);
    }

    public void getAccounts(){
        for(Account a : ListOfAccounts)
            System.out.printf("Number: %s\nBalance: %f\n", a.nr, a.balance);
    }

}

public class Person extends Client{
    protected String name, surname, PESEL;

    public Person(){
        System.out.println("Type name: ");
        name = input_data();
        System.out.println("Type surname: ");
        surname = input_data();
        System.out.println("Type PESEL number: ");
        SocialSecurity = input_data();
    }

    public String input_data(){
        Scanner input = new Scanner(System.in);
        String data = input.nextLine();
        return data;
    }
}

Problem tkwi w mojej klasie Bank, a dokładniej w metodzie getClients wyświetla mi następujący błąd: "name cannot be resolved or is not a field". To samo dla pól surname i PESEL. Wiem, że mogę przenieść te pola do klasy Client i mieć problem z głowy, lecz muszę wykorzystać tutaj rzutowanie w dół oraz górę. Poczytałem trochę o RTTI, ale nie udało mi się znaleźć żadnej solucji dla tego problemu. Wrzucam także zdjęcie zadania, gdyby miało w czymś pomóc. http://gyazo.com/2523c1e7d5ae662d6d8c5210bb44ec37

0

Czy na pewno osoba powinna rozszerzać klienta a nie odwrotnie?

0
dymul napisał(a):

Pozwól, że użyję wyszukiwarki za Ciebie:)

Rzutowanie w dół

Czyli mam użyć konstruktora Client w konstruktorze Person? Nie wiem zbytnio w czym miałby mi pomóc ten temat.

szweszwe napisał(a):

Czy na pewno osoba powinna rozszerzać klienta a nie odwrotnie?

Sądząc po diagramie, raczej tak.

Tak ogólnie to może zna ktoś jakiś inny sposób wypisywania LinkedListy, gdzie nie musiałbym korzystać z tych pól klasy person?

1

zamień

    public void getClients(){
        for(Client c : ListOfClients)
            System.out.printf("Name: %s \nSurname: %s \nPESEL: %s\n", c.name, c.surname, c.PESEL);

na

    public void getClients(){
        for(Client c : ListOfClients)
            System.out.printf("Name: %s \nSurname: %s \nPESEL: %s\n", ((Person)c).name, ((Person)c).surname, ((Person)c).PESEL);

ot i całe rzutowanie w dół. Pozbawione jakiegokolwiek sensu więc zgaduję, że zadanie studenckie.

0
dymul napisał(a):

Pozbawione jakiegokolwiek sensu więc zgaduję, że zadanie studenckie.

Zgadza się, dzięki za pomoc.

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