3种类内部的用法(成员,局部,匿名)
程序员文章站
2023-12-28 19:19:28
1 package Inner; 2 /** 3 * 测试内部类的使用 4 * @author 小王同学 5 * 1.成员内部类 ①非静态内部类 ②静态内部类 6 * 2.局部内部类 7 * 3.匿名内部类 8 * 总结: 内部类不只是普通的类,还可以是接口(Interface)默认static a... ......
1 package inner; 2 /** 3 * 测试内部类的使用 4 * @author 小王同学 5 * 1.成员内部类 ①非静态内部类 ②静态内部类 6 * 2.局部内部类 7 * 3.匿名内部类 8 * 总结: 内部类不只是普通的类,还可以是接口(interface)默认static abstract修饰 ,抽象类(abstract) 9 * 使用方法内部类时,一定要在内部类中调用一下内部类中的方法否则无法使用. 列如:new inner3().test(); 10 * 成员内部类就是类的一个成员变量. 11 * 静态内部类只能使用外部类的静态成员. 普通内部类可以调用外部类的任何方法和属性,私有的也可以. 12 * 普通内部类就是方法的方法的一个局部变量,作用域只限于方法体中. 13 * 匿名内部类就是用来实现抽象方法或者是接口的抽象方法的. 14 * 使用匿名内部类实现抽象类的方法时,必须要抽象类声明为静态的(static)才行,因为在main方法中不能直接调用非静态方法. 15 */ 16 public class outer { 17 private string name; 18 private static int age; 19 //1.测试成员内部类 20 class inner{ 21 } 22 static class inner2{ 23 void run(){ 24 system.out.println(age);//静态内部类只能使用外部类的静态成员。 25 } 26 } 27 //2.测试方法内部类 28 void testxx(){ 29 int a =10; 30 class inner3{ 31 public void test(){//内部累的方法,可以和外部类的方法重名. 32 system.out.println("这是方法内部类"); 33 system.out.println("这是外部方法的局部变量:a="+a); 34 system.out.println("这是外部方法的成员变量:age="+name); 35 } 36 37 } 38 39 new inner3().test();//方法内部类在这里调用,不然在外界没有办法访问到 40 } 41 //3.测试匿名内部类 42 interface inter { //接口和抽象方法也可以充当内部类使用 43 void show(); 44 } 45 static abstract class inner4{ //这里不加static的话,在使用匿名内部类时,就无法 46 abstract void jump(); 47 } 48 public static void main(string[] args) { 49 //1.成员内部类 50 /**两种定义非静态内部类的方法 */ 51 inner n1 =new outer().new inner(); 52 outer o1 =new outer(); 53 inner n2 =o1.new inner(); 54 /**定义静态类的方法 */ 55 inner2 n3 =new outer.inner2();//直接使用new 外部类.内部类(); 56 //2.方法内部类 57 /**调用方法内部类的方法 */ 58 new outer().testxx(); 59 //3.匿名内部类 60 /**这是实现接口的抽象方法*/ 61 inter t1= new inter(){ 62 @override 63 public void show() { 64 system.out.println("这是匿名内部类噢噢噢噢"); 65 } 66 }; 67 t1.show(); //调用匿名内部类 68 /**实现抽象类的抽象方法 */ 69 inner4 in4 =new inner4() { 70 @override 71 void jump() { 72 // todo auto-generated method stub 73 74 } 75 }; 76 } 77 }