gpt4 book ai didi

java - 学习多态性

转载 作者:行者123 更新时间:2023-12-01 07:23:58 25 4
gpt4 key购买 nike

为什么我无法从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com