黑马程序员——内部类
------- android培训、java培训、期待与您交流! ----------
1、内部类定义:在一个类中定义另外一个类,那么另外一个类就叫内部类。
2、内部类的class文件命名:外部类$内部类.class
3、内部类分为成员类部类,局部类部类.......
4、成员内部类的访问方式:
第一种...:在其他类直接创建内部类对象。 格式: 外部类.内部类 变量名 = new 外部类().new 内部类();
创建外部类对象调用内部类对象,这样就得到内部类对象了,因为只有外部类对象存在,成员内部类才可见,代码如下:
class Outer{int x = 3;//在成员位置,所以叫做成员类部类,创建外部类对象时才可见。class Inner{public void method(){System.out.println("method..."+x);}}}class InnerClass{public static void main(String[] args){//创建外部类对象调用内部类<而内部类是一个类所以是以对象形式存在>得到内部类对象 Outer.InnerOuter.Inner outIn = new Outer().new Inner();outIn.method();//输出结果是 method...3}}
注意:如果该成员内部类是一个静态的成员内部类,那么创建方式如下:
外部类.内部类 变量名 = new 外部类.内部类();
第二种方式访问,在外部类定义一个方法,在方法体中创建内部类对象,代码如下
class Inner{int x=3;class Outer{public void show(){System.out.println("show..."+3);}}public void function(){new Outer().show();}}
成员内部类注意的细节:
a、内部类可以直接访问外部类成员,当外部类与内部类出现同名成员变量时,那么在内部类中默认访问内部类成员变量<就近原则机制>;如果需要访问外部类成员变量时,那么可以通过:
外部类.this.成员变量
b、如果成员内部类使用private修饰,那么该成员内部类就只能在外部类的方法中创建对象进行访问,在其他类不能再创建内部类对象...........
c、如果内部类中出现了静态的成员,那么成员内部类也必须使用static修饰,因为静态成员是随着类的加载而存在,得先有类...
---------------------------------------------------------------------------------------------------
局部内部类定义在方法上,代码如下:
class Outer{ int x=3; public void method(){ final int x=10;//x变量是当方法执行完毕之后马上从内存中消失。 class Inner{ public void show(){ System.out.println("show..."); } } }}
局部内部类:在一个类中函数中 定义另外一个类就称作为局部内部类。
注意的细节:1. 局部内部类中的方法访问了局部变量,那么这时候需要把该局部变量声明为final修饰。
a、前提内部类必须继承一个类或者实现某个接口,才能创建匿名内部类。
b、定义格式:new 父类或者接口(){定义子类的内容}
c、其实匿名内部类就是一个匿名子类对象。
d、匿名内部类中定义的方法最好不要超过3个...
abstract class AbsDemo{public abstract void show();}class Outer{int x=3;/*class Inner extends AbsDemo{public void show(){System.out.println("show..."+3);}}*/public void function(){// new Inner().show();// 注释中的代码用匿名内部类表示如下new AbsDemo(){public void show(){System.out.println("show..."+3);}}.show();}}class InnerClassDemo3{public static void main(String[] args){new Outer().function();}}
570

被折叠的 条评论
为什么被折叠?



