簡體   English   中英

Java - 無法調用擴展超級非抽象類的抽象類方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM