(*)内部类:定义在类中的类
1,内部类可以直接访问外部类中的成员,包括私有,内部类成员调用外部类成员时都有一句隐式命令(外部类名.this.)
2,外部类访问内部类成员必须通过内部类对象进行调用
3,如何在其他类中调用内部类成员,outer.inner inner = new outer().new inner();
4,内部类可以被private和static修饰,特性和使用方法和类普通成员一样
5,内部类中有Static成员,该内部类必须被Static修饰
6,Static函数调用Static内部类时,如下:
//内部类定义规则,事物中还有内部事物时,内部事物可以用内部类来描述
//可以private内部类实现封装
//成员内部类和局部内部类
1,局部内部类不能被private,Static成员修饰符修饰
2,可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的局部变量。可以访问被final修饰的局部变量
//局部内部类使用实例,如下:
(*)匿名内部类:
1,匿名内部类其实就是内部类的简写格式
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口
3,匿名内部类的格式: new 父类或接口(){复写继承的代码}.方法名();如下:
1 class nilei 2 { 3 public static void main(String[] args) 4 { 5 new inter(){ 6 public void method() 7 { 8 System.out.println("method002"); 9 } 10 }.method(); 11 12 new Object(){ 13 public void aa(){ 14 System.out.println("method003"); 15 } 16 }.aa(); 17 18 } 19 } 20 interface inter 21 { 22 void method(); 23 }
4,匿名内部类最好不要超过3个方法
(*)匿名内部类练习:
1 class nilei 2 { 3 public static void main(String[] args) 4 { 5 //调用test类中的functions方法,function方法的返回值是一个匿名内部类 6 test.function().method(); 7 //调用nilei类中的show方法,在参数列表中创建匿名类当参数 8 show(new inter(){ 9 public void method(){ 10 System.out.println("method001"); 11 } 12 }); 13 //调用nilei类中的show2方法,返回值是一个匿名内部类 14 show2().method(); 15 16 } 17 18 public static void show(inter in){ 19 in.method(); 20 } 21 public static inter show2(){ 22 return new inter(){ 23 public void method() 24 { 25 System.out.println("method002"); 26 } 27 }; 28 } 29 } 30 31 class test 32 { 33 static inter function(){ 34 return new inter(){ 35 public void method() 36 { 37 System.out.println("method"); 38 } 39 }; 40 } 41 } 42 interface inter 43 { 44 void method(); 45 }