内部类

来源:互联网 发布:雷欧mac全灭赛文复活 编辑:程序博客网 时间:2024/06/05 18:17

**1.内部类的访问特点?

内部类可以直接访问外部类,包括私有的!但是外部类不可以直接访问内部类,需要在这里创建内部类的对象,通过内部类的对象在进行访问。
2.内部类的分类。*
a:成员内部类,在外部类的成员位置
b:局部内部类,在外部类的局部位置
注:成员内部类不可以直接访问内部类的成员,访问的格式应该如下所示:
外部类.内部类. 对象名=new 外部类().new内部类()
3.成员内部类
a:成员内部类可以用一下关键字修饰:
private : 目的是保护数据的安全
static : 成员内部类可以是一个静态的修饰类。
注: 静态的内部类访问外部类的数据必须是静态的!即静态只可以访问静态的!
b:当成员内部类被static修饰的时候,静态内部类访问本类中成员的格式如下:
1 : Outer.Inner aa=new Outer.Inner()
2 : Outer.Inner.方法名
c:当成员变量被private修饰时,访问格式:
Outer.Inner aa=new Outer().new Inner(); //错误的访问格式
正确的访问格式如以下代码所示:
class Bady{
private class Heart{
public viod operate(){
System.out.println(“心脏搭桥”)
}
}
public void work(){
if(判断语句){
Heart h=new Heart();
h.operate(); // 正确的访问方式!!!
}
}
}
4.局部内部类
1.局部内部类的成员可以直接访问外部类的成员,
2.局部位置访问局部内部类的方法?
创建局部内部类的对象,然后在进行访问。
面试题*重点内容*
3.局部内部类访问局部变量,有什么要求?
答:局部内部类访问局部变量,此时的局部变量必须用final修饰。
原因如下:
局部变量随着方法的调用而存在,随着方法的调用完毕而消失,但是不会立即的消失,等待GC空闲的时候 在进行进行垃圾回收,此时外部类的方法调用完毕,可是局部内部类的方法还在访问,因此得用final修饰,而保持不变。
5.匿名内部类
1.前提条件:有一个类或者接口存在,这个类可以是抽象类也可以是具体的类。
2.匿名内部类的格式:
new 类名/接口名(){
方法重写
};
本质:需要继承该类或者实现接口的子类对象。
注:内部类和外部类没有继承关系!!!

原创粉丝点击