簡體   English   中英

將子類另存為超類類型並在Java中使用其方法

[英]Saving a subclass as a superclass type and using its methods in Java

在下面的代碼中,子類擴展其超類,並覆蓋其方法,使用它來調用該子類唯一的另一個方法,該方法使用該子類的變量。

然后,程序將子類的實例存儲到類型為Superclass的變量中,然后調用其方法。 然后,它就像子類類型一樣運行,調用子類唯一的方法和變量。 但是,不可能直接訪問它們。

class Superclass {
    void go() {
        System.out.println(0);
    }
}

class Subclass extends Superclass {
    int i = 1;

    @Override
    void go() {
        run();
    }

    void run() {
        System.out.println(i);
    }
}

public class JavaApplication {
    public static void main(String[] args) {
        Superclass instance = new Subclass();

        instance.go();                 // outputs 1; it must have called run() and accessed i
        instance.run();                // causes compile-time error
        System.out.println(instance.i);// causes compile-time error
    }
}

將Subclass實例保存為Superclass類型后,它仍然可以訪問所有Subclass字段和方法。 那為什么我不能直接訪問它們呢?

在使用變量和靜態方法的情況下,將調用根據引用類型的方法,而不是根據所引用的對象。

但是在實例方法的情況下,該方法是根據所引用對象的類型而不是引用類型來調用的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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