内部类可以被覆盖吗
来源:互联网 发布:舜德数据怎么样 编辑:程序博客网 时间:2024/05/17 04:55
import static lu.utils.Print.*;
/*
* 默认的构造器是编译自动生成的,这里调用基类的默认构造器。
* 当继承了某个外围类的时候,内部类并没有发生什么神奇变化。这两个内部类是完全独立的两个实体。*/
class Egg{
private Yolk y;
protected class Yolk{
public Yolk(){print("Egg.Yolk");}
}
public Egg(){
print("New Egg()");
y=new Yolk();
}
}
public class BigEgg extends Egg{
public class Yolk{
public Yolk(){print("BigEgg.Yolk()");}
}
public static void main(String[] args){
new BigEgg();
}
}
Output:
New Egg()
Egg.Yolk
明确继承某个内部类也是可以的
package lu.innerclasses;
import static lu.utils.Print.*;
/*
* BigEgg2.Yolk通过extends Egg2.Yolk明确地继承了此内部类,并且覆盖了其中的方法。
* insertYolk()方法允许BigEgg2将自己的Yolk对象向上转型为Egg2中的引用y。所以当g()调用y.f()时,
* 覆盖后的新版的f()被执行。第二次调用Egg2.Yolk(),结果是BigEgg2.Yolk的构造器调用了基类的构造器。
* 可以看到在调用g()的时候,新版的f()被调用了。*/
class Egg2 {
protected class Yolk{
public Yolk(){print("Egg2.Yolk()");}
public void f(){print("Egg2.Yolk.f()");}
}
private Yolk y=new Yolk();
public Egg2(){print("New Egg2()");}
public void insertYolk(Yolk yy){y=yy;}
public void g(){y.f();}
}
public class BigEgg2 extends Egg2{
public class Yolk extends Egg2.Yolk{
public Yolk(){print("BigEgg2.Yolk()");}
public void f(){print("BigEgg2.Yolk.f()");}
}
public BigEgg2(){insertYolk(new Yolk());}
public static void main(String[] args){
Egg2 e2=new BigEgg2();
e2.g();
}
}
outPut
Egg2.Yolk()
New Egg2()
Egg2.Yolk()
BigEgg2.Yolk()
BigEgg2.Yolk.f()
- 内部类可以被覆盖吗
- Java中内部类可以被覆盖吗
- Java之内部类可以被覆盖吗详解(附源码)
- 从内部类继承 内部类被覆盖 内部类生成的class文件名
- 方法可以被覆盖,但是属性不会被覆盖
- 同名Cookie是可以被覆盖的
- 对象实体被覆盖
- 防止文件被覆盖
- 元素是否被覆盖
- 内部类可以被重载吗?
- 内部类可以被重载吗?
- bootstrap固定导航条导致页面内跳转被覆盖的解决办法
- css样式防止被覆盖
- 滚动条 div被覆盖
- list里面数据被覆盖
- noclobber----防止文件被覆盖
- css样式不被覆盖
- CSS-下拉菜单被覆盖
- springmvc 定义拦截器
- Android studio下的Android JNI调用以及动态链接库.so的生成
- 在GitHub上下载Demo 运行时候会出现The sandbox is not sync with the Podfile.lock
- libevent异步IO读写操作
- 求最长回文串的几种方法
- 内部类可以被覆盖吗
- Android定位方式
- 在docker中安装apache
- 在iterm中用expect脚本实现ssh, telnet对aix, linux的自动登录
- ios界面设计学习之布局
- 题
- 时间复杂度计算
- Android AP 热点 使用经验
- CAS4.0 4.1 服务器端搭建(二)