Czytam właśnie książkę o Javie, i próbuję swoich sił. Mam 4 klasy.
Nadklasa to Person. Podklasy to Employee co dziedziczy po Person, i Manager co dziedziczy po Employee.
Mam jeszcze klasę Employeetest.
a w niej taki kod
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package employee;
/**
*
* @author Mateusz
*/
public class Employeetest
{
public static void main(String[] args)
{
//Manager boss = new Manager("Karol", "Parol", 75000);
Person e[] = new Person[3];
e[0] = new Employee("Damian", "Nowak", 40000);
e[1] = new Employee("Karol", "Kowalski", 45000);
e[2] = new Manager("Karol", "Parol", 75000, 25000);
for(Person E : e)
{
if(E instanceof Manager)
{
Manager boss = (Manager) E;
System.out.println(boss.getImie() + " " + boss.getNazwisko()+" " + boss.getPensja() + " " + boss.getBonus()+ " " + boss.toString());
}
else
System.out.println(E.getImie() + " " + E.getNazwisko() + " " + E.getPensja()+ " " + E.toString());
}
//Zgodnie z tym co pisze w książce poniższa peętla powinna dzialać
//getBonus to metoda tylko w klasie Manager
for(Person E : e)
{
if(E instanceof Manager)
{
System.out.println(E.getImie() + " " + E.getNazwisko()+" " + E.getPensja() + " " + (Manager)E.getBonus()+ " " + E.toString());
}
else
System.out.println(E.getImie() + " " + E.getNazwisko() + " " + E.getPensja()+ " " + E.toString());
}
}
}
Dlaczego pomimo rzutowania kompilator zgłasza błąd w drugiej pętli, przy wywołaniu metody getBonus?
Cannot find symbol
symbol : getBonus()
location: variable E of type Person
Praktycznie taki sam przykład jest w książce.