1.什么是内部类,特点是什么?
答:在类中定义的类就是内部类。特点(1)能够直接访问所在类的成员,包括私有的。(2)外部类访问内部类需要创建内部类的对象。
2.成员内部类是什么?
答:成员内部类是定义在成员位置的类。能够被私有、静态修饰。
3..内部类的方法如果访问局部变量,内部类的成员变量,外部类的成员变量?
答:局部变量可以直接访问;内部类的成员变量this. ;外部类的成员变量:外部类名.this.
4.局部内部类访问的局部变量为什么要用final修饰?
答:因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用。但是JDK1.8以后取消了这个特性,会默认加上final的。
5.什么是匿名内部类?
答:匿名内部类就是没有名字的内部类,是内部类的简化形式。匿名内部类必须继承或实现一个接口,在使用的时候直接用父类的名字创建一个子类对象并实现其中的方法,匿名内部类的实质是一个继承了该类或者实现该接口的匿名的子类对象。
前提:必须继承一个类或实现一个接口。
规则:(1)不能是抽象的,因为它的本质是一个子类对象。(2)不能定义构造方法,因为没有类名。
使用:(1)当接口中的只有一个抽象方法时,并对方法调用一次的时候(2)传递参数的时候,如果参数是接口或抽象类,其实需要的就是实现类对象或者子类对象,这个时候使用匿名内部类。 |
|