Mam naprawdę proste pytanie:Klasa abstrakcyjna - Super Konstruktor (Java)
Załóżmy, że mam klasę abstrakcyjną, która reprezentuje osobę na pasku.
public class Person {
protected String firstName;
protected String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
Mam również 2 klasy, które rozszerzają osobę, powiedzmy klasę dla barmanów i klasę dla klientów.
W klasie dla klientów chcę również int reprezentujący jego wiek jako pole. W klasie barmanów, nie mamy.
Ponadto, dla klasy klienta, chcę metodę isAdult().
public class Bartender extends Person {
public Bartender(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
public class Customer extends Person {
private int age;
public Customer(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
}
teraz mam 2 pytania: „niejawny Super konstruktor pasażera() jest niezdefiniowane musi jawnie wywołać inny konstruktor”
1) To nie działa jak dostaję komunikat. Co to dokładnie oznacza? 2) Dla isAdult() metoda, czuję się jak najlepszym sposobem na to jest wprowadzenie go w klasie abstrakcyjnej osoba taka jak ta:
public abstract boolean isAdult();
a następnie wdrożyć go do Barmanów powracających zawsze prawdziwe i dla Klientów sprawdzanie ich wieku.
Innym sposobem jest wdrożenie go z klasy Osoba bezpośrednio tak:
public boolean isAdult() {
return (this instanceof Bartender || age > 18);
}
Czy to praca i którędy będzie lepiej?