黑马程序员_内部类总结

来源:互联网 发布:手机淘宝多图变大代码 编辑:程序博客网 时间:2024/04/26 23:05

-------android培训java培训、期待与您交流! ----------


内部类总结

内部类:

外部类: 宿主类

内部类:        嵌套类

 

1.        非静态内部类  :  内部类没有使用 static 修饰,  此时 内部类属于 外部类的一个对象,也就是说创建内部类对象之前应该先创建外部类对象

 

外部类 out = new 外部类();

 

外部类.内部类 in = out.new 内部类();

 

2.        静态内部类 : 内部类使用了 static 修饰,此时内部类属于 外部类,也就说,外部类可以直接调用内部类

 

外部类.内部类 in  = new 外部类.内部类();

3.        局部内部类,  在方法里创建类

 

 

4.        局部内部类的一个特殊,  

1   在局部内部类前不能用修饰符publicprivate,protected. 

2   可以定义与外部类同名的变量

     如果内部类没有与外部类同名的变量,在内部类中可以直接访问外部类的实例变量

     如果内部类中有与外部类同名的变量,直接用变量名访问的是内部类的变量,this.变量名访问的也是内部类变量.

     用外部类名.this.内部类变量名访问的是外部类变量

3   不可以定义静态变量和方法

4   可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的     

5   可以访问外部类的所有成员

 

5.匿名内部类: 

没有名字的局部内部类,只能用一次

 

1. 不能是抽象类 

2. 没有构造方法

 

创建格式:        

 

new 父类(参数){

//覆写父类的方法

}

 

new 接口()

{

//覆写接口里的方法

}

 

一旦一个方法需要一个对象的时候,而该对象有父类或接口的时候

 

void  useUSB(IUSB usb){

usb.use();

}

 

useUSB(new  IUSB(){

public void  use(){

 

}

});

实例:

/**    * 内部类之局部内部类实例演示    */   public class InnerClassA {              private String str1 = "abc";       private int n = 35;       private static String str2 = "MMM";              public void show(){                      final int K = 54;           class InnerOne{               int n = 12;               //static String s = "name";内部类中不能定义static变量.               public void aaa(){                   System.out.println("局部常量K的值为:  "+K);                   System.out.println("外围类成员变量str1的值:  "+str1);                   System.out.println("外围类成员变量n的值:  "+InnerClassA.this.n);                   System.out.println("外围类成员变量str2的值:  "+str2);                   System.out.println("内部类成员变量n的值:  "+n);               }           }           new InnerOne().aaa();       }         public static void main(String[] args) {             InnerClassA a = new InnerClassA();           a.show();       }   }  


0 0
原创粉丝点击