为什么我无法从 Test 类中的 main 访问 Daily 类内部的方法。具体来说,appsOn() 方法是我想从 main.c 中访问的方法。如果我最初创建一个 Daily 类型的对象,那么它允许我访问genesisOn() 方法,但如果我最初将它声明为一般约会,那么它就不允许我访问。
顺便说一句,我正在尝试自学多态性。
public class Appointment{
private String description;
private String date;
public Appointment(){
this.description = "";
this.date = "";
}
public Appointment(String de, String da){
this.description = de;
this.date = da;
}
public void setDescription(String d){
this.description = d;
}
public String getDescription(){
return this.description;
}
public void setDate(String d){
this.date = d;
}
public String getDate(){
return this.date;
}
public String toString() {
return "Appointment [description=" + description + ", date=" + date + "]";
}
}
public class Daily extends Appointment{
public Daily(){
super();
}
public Daily(String de, String da){
super(de, da);
}
public boolean occursOn(int year, int month, int day){
return true;
}
public String toString(){
String str = "Daily " + super.toString();
return str;
}
}
public class Test {
public static void main(String [] args){
Appointment appt1;
appt1 = new Onetime("See doctor", "01/01/2015");
}
}
最佳答案
这是因为子类继承父类的属性,而不是相反。尽管您可以将 Daily 实例泛化为 Appointment,但您无法在不进行强制转换的情况下在实例上调用 Daily 特定方法。
如果要在Daily和Appointment中都访问occurredOn(),则需要在Appointment类中声明该方法,以便其子类继承该方法。
关于java - 学习多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067118/