簡體   English   中英

如何讓Subclass覆蓋Class的內部類?

[英]How to let Subclass cover the inner class of the Class?

package tt;

class Out {
    class Inner {
        void print() {
            System.out.println("i anm inner1");
        }
    }

    public void run() {
        Inner in = new Inner();
        in.print();
    }

}

class Out2 extends Out{
    class Inner{
        void print() {
            System.out.println("i anm inner2");
        }
    }
}

public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        new Out2().run(); // 打印 i anm inner2
    }
}

該程序現在打印出來(“ i anm inner1”)。 如何使程序打印(“ i anm inner2”)?

不必覆蓋內部類,而可以覆蓋(覆蓋)基類中的工廠方法,而是使用Out2.Inner,必須擴展Out.Inner。

class Out {

    class Inner {
            void print() {
                System.out.println("i anm inner1");
            }
    }

    public Inner createInner(){
        return new Inner();
    }

    public void run() {
        Inner in = createInner();
        in.print();
    }

}

class Out2 extends Out {

    class Inner extends Out.Inner {
            void print() {
                System.out.println("i anm inner2");
            }

    }

    public Out.Inner createInner(){
        return new Inner();
    }
}

要么調用孩子內部類的print()

new Out2().new Inner().print(); 

或者,在Out2覆蓋run()

    @Override
    public void run() {
        Inner in = new Inner();
        in.print();
    }

您應該在out2覆蓋run()

暫無
暫無

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

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