java中匿名类的注意细节
abstract class Outer{ int num; public Outer(int x){ num = x; } public abstract void show1(); public abstract void show2(); } public class PC{ public static void main(String[] args){ new Outer(55)//构造父类部分 //子类重写部分 { public void show1(){ System.out.println(num++); } public void show2(){ System.out.println(num++); } public void show3(){ System.out.println(num++); } }.show3(); Outer out = new Outer(55){ public void show1(){ System.out.println(num++); } public void show2(){ System.out.println(num++); } public void show3(){ System.out.println(num++); } }; out.show1(); out.show2(); //out.show3();// 错误: 找不到符号 out.show3(); //注意: 第一个 new Outer(55) 得到是 Outer 的子类对象! //第二个 new Outer(55)得到子类对象之后又进行了类型提升, 所以它会隐藏自身特有的方法,呈现其父类的属性! } }
本文来自博客园,作者:hjzqyx,转载请注明原文链接:https://www.cnblogs.com/hujunzheng/p/3872636.html