[英]Java - Unable to call Abstract class methods that extend a super non-abstract class
稱為 phone(非抽象)的超類,然后是擴展它的 1 個抽象類,稱為“developer1”,最后一個名為“developer2”的具體類擴展了抽象“developer1”。 問題是我被要求使用 Phone(super class) 實例化並通過最后一個類訪問所有內容。 我沒有收到任何錯誤,但我無法看到或訪問除超類之外的任何其他類的任何方法。
class Phone {
private String brand;
public Phone(){
this.brand="samsung";
}
public void show(){
System.out.println("current phone");
}
}
abstract class DeveloperOne extends Phone{
public DeveloperOne() {
super();
}
public void newRingtone(){
System.out.println("new ringtone developed");
}
abstract void phoneTv();
}
class DeveloperTwo extends DeveloperOne {
@Override
public void phoneTv() {
System.out.println("phone tv developed");
}
}
class Main {
public static void main(String[] args) {
PhoneParent phone = new DeveloperTwo(); //this dynamic binding is required
}
}
問題就在這里,我無法查看或訪問 developerOne 或 DeveloperTwo 類的任何方法,我只能查看和訪問 Phone(超類)中的內容。 我怎樣才能解決這個問題?
class Main {
public static void main(String[] args) {
PhoneParent phone = new DeveloperTwo(); //this dynamic binding is required
}
沒有名為PhoneParent
類。 我認為這是一個錯字。 您應該將其實例化為DeveloperTwo
。
DeveloperTwo phone = new DeveloperTwo();
否則,您將看到的只是Phone
類的方法。
你也可以這樣做。
Phone phone = new DeveloperTwo();
DeveloperTwo devel = (DeveloperTwo) phone; // casting
然后使用devel
實例訪問方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.