ich auf meiner Aufgabe bin arbeiten, aber ich habe mit den abstrakten Klassen und konkreten Klassen verwirrt, und ich bekomme Fehler von meinem Programm ...Java - Abstrakte Klassen und konkrete Klassen
Angenommen, es ist eine abstrakte Klasse Person und eine konkrete Unterklasse 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());
}
}
Dann implementiere ich eine Hauptfunktion zu testen, aber ich habe einen Fehler ...:
public class TestMain {
public static void main(String[] args) {
Person person;
Student student;
person = new Student("Sam");
student = person;
student.doAction(person);
}
}
es wird gesagt, student = person
r Empfangen eines Fehlers, der besagt, dass "Error: Incompatible types: Person cannot be converted to Student"
. Was stimmt daran eigentlich und warum ...? Kann das jemand erklären ...?
Tipp: Verwenden Sie 'getClass() 'um zu sehen, welche Definition ist Ihre Instanz – roeygol