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