я работаю на моем назначении, но я запуталась с абстрактными классами и конкретными классами, и я получаю ошибку из моей программы ...Java - Абстрактные классы и конкретные классы
Пусть имеется абстрактный класс Person и конкретный подкласс Student:
abstract class Person{
private String name;
public Person(String s){
name = s;
}
public String getName() {
return name;
}
public abstract void doAction(Person other);
}
class Student extends Person{
public Student(String name){
super(name);
}
public void doAction(Person other){
System.out.println("This person's name is " + getName());
}
}
Тогда я реализую основную функцию, чтобы проверить это, но я получил ошибку ...:
public class TestMain {
public static void main(String[] args) {
Person person;
Student student;
person = new Student("Sam");
student = person;
student.doAction(person);
}
}
Говорят student = person
г получив сообщение об ошибке "Error: Incompatible types: Person cannot be converted to Student"
. Что не так с этим и почему ...? Кто-нибудь может объяснить это ...?
Подсказка: используйте 'GetClass() ', чтобы узнать, какое определение является вашим экземпляром. – roeygol