内部类相关注意事项

来源:互联网 发布:dts播放器 for mac 编辑:程序博客网 时间:2024/05/16 14:46

这里首先写一下内部类的定义和作用
把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有的地方也叫嵌套类)
内部类的作用:
1.提供了很好的封装性,可以吧内部类隐藏在外部类之内,不允许同一个包中的其他类来刚问该类。例如Cow类内部定义了CowLeg类,CowLeg类只有在Cow类中才有效,离开了Cow类就没有任何意义了。所以不允许其他的类访问内部类

2.内部类可以直接访问外部类的私有成员,因为内部类被当成其外部类的成员。同一类的成员之间可以互相访问,但是外部类不能访问内部类的实现细节,如成员变量。

注意:当非静态内部类的某个方法访问成员变量的时候,系统优先在该方法内使用该变量,如果存在就是用该变量,不过不存在就在该内部类中查找是否存在该名字的成员变量,如果存在就使用,如果不存在就就在该外部类中查找是否存在改名字的变量。如果存在就是用,如果不存在继续在该外部类的父类中查找是否又改名的变量,如果有就访问,没有就编译报错。

还应该注意,内部类可以访问外部类包括private的成员变量或方法,但是子类不能访问父类中的private成员变量或方法,因为父类中的成员变量或方法在子类中是隐藏的!

3.匿名内部类适合于创建那些只需要使用一次的类。

非静态内部类对象和外部类对象的类关系:

非静态内部类必须寄生在外部类对象里,而外部类对象则不一定有非静态内部类寄生于其中。如果静态内部类存在的时候,那么它所寄生的外部类必然存在。但是,外部类对象存在时,外部类对象里不一定寄生了非静态内部类。因此:外部类对象访问非静态内部类成员是,可能非静态普通内部类根本不存在!而非静态内部类对象访问外部类成员时,外部类对象一定存在。

1 0