Java 匿名内部类

来源:互联网 发布:贱人就是矫情网络歌曲 编辑:程序博客网 时间:2024/05/29 11:02
/*内部类定义在局部时,1,不可以被成员修饰符修饰2,可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。*///非静态,没对象,不运行class Outer{int x = 3;void method(final int a){final int y = 4;class Inner{void function(){System.out.println(y);}}new Inner().function();}}class  InnerClassDemo3{public static void main(String[] args) {Outer out = new Outer();out.method(7);out.method(8);}}


/*匿名内部类:1,匿名内部类其实就是内部类的简写格式。2,定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖,可以理解为带内容的对象。5,匿名内部类中定义的方法最好不要超过3个。*/abstract class AbsDemo{abstract void show();}class Outer{int x = 3;/*class Inner extends AbsDemo{int num = 90;void show(){System.out.println("show :"+num);}void abc(){System.out.println("hehe");}}*/public void function(){//AbsDemo a = new Inner();//Inner in = new Inner();//in.show();//in.abc();AbsDemo d = new AbsDemo()//父类引用指向子类对象//AbsDemo a = new Inner();{int num = 9;void show(){System.out.println("num==="+num);}void abc(){System.out.println("haha");}};d.show();//d.abc();//编译失败;}}class InnerClassDemo4 {public static void main(String[] args) {new Outer().function();}}

小练习

interface Inter{void method();}class Test {//补足代码。通过匿名内部类。/*static class Inner implements Inter{public void method(){System.out.println("method run");}}*/static Inter function(){return new Inter(){public void method(){System.out.println("method run");}};}}class InnerClassTest {public static void main(String[] args) {//Test.function():Test类中有一个静态的方法function。//.method():function这个方法运算后的结果是一个对象。而且是一个Inter类型的对象。//因为只有是Inter类型的对象,才可以调用method方法。Test.function().method();//Inter in = Test.function();//in.method();show(new Inter(){public void method(){System.out.println("method show run");}});}public static void show(Inter in){in.method();}}class InnerTest{public static void main(String[] args){new Object()//Object的子类对象{public void function(){}}.function();}}

——摘自《毕向东25天》



0 0
原创粉丝点击