------- android培训、java培训、期待与您交流! ----------
package javase;
public class Day02_内部类 {
/*
* 类不可以被private 修饰?
* 错,内部类可以被private 修饰。。。因为类的成员可以被private修饰,并且成员之间可以相互访问,
* 内部类可以被static修饰,而外部类不可以,因为被static修饰的是所属于类,外部类是属于包的。
* 被static修饰的所属于外部类本身,否则则属于实例!
*
*
* 内部类如果被static静态修饰,那么它寄生在外部类本身里面
* 如果不被static修饰,那么它寄生在外部类的实例里面
* out.this代表内部类实例所寄生的宿主类的实例的引用。
* ====================================================================
*
* 非静态内部类
* 在外部其他类中调用非静态内部类:
* outer out = new outer ();
* outer.inner in = out.new inner();
* 简写就是 outer.inner in = new outer().new inner();
*
* 对内部类的继承:
* 里面的构造器必须先访问宿主类的构造器,由宿主对象来调用它的构造器。
* class Other extends outer.inner
* {
* Other()
* {
* new outer.super();
* //初始化代码块。。。
* }
*
* }
* 或者是:
* class Other extends outer.inner
* {
* Other(outer out ){
* out.super();
* }
*
* }
* ========================================================
* 对于静态内部类:你可以把外部类当成内部类的包就可以了。
* 静态内部类他是寄生在外部类的类本身中,所以它不需要创建宿主类的对象。
* outer.inner in = new out.inner();
* 对于继承:
* class Other extends outer.inner{}这样写就可以了,里面的内容跟定义普通类一样。不需要创建外部类的实例。
*
* =========================================================
* 局部内部类:
* 局部内部类可以被static修饰吗?
* 局部内部类不可以被static修饰,因为局部内部类的上一级程序单元是方法,而不是类,因此用static修饰没有任何意义。
* 另外因为局部内部类的作用域是方法,其他程序单元也不可能访问一个方法中的成员,所以任何访问权限修饰符都不能使用!
*
* Java中每个类都会有对应的class文件
* 局部内部类的class文件为:外部类$N内部类.class
* 为什么要用N?
* 因为不同的方法中可以定义相同类名的局部内部类
* =============================================================================
*
* 匿名内部类:是一个没有名字的内部类。
* 匿名内部类在创建时做了三件事:
* 1,定义了类
* 2,创建了对象
* 3,将子类实例赋值给了父类或者接口的引用
*
*
* 匿名内部类的两条规则:
* 1,匿名内部类必须显示的继承一个接口或者类。
* 2,匿名内部类不能定义构造器,因为匿名内部类没有名字
* 3,匿名内部类不能定义抽象方法,因为匿名内部类在创建时就返回了一个实例。
*
*
*
*
*
*
*
*
*
*
*/
}