----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
内部类:类中之类
适用特点:类的内部具有可以抽象的事物(即此事物也有有属性和行为,用程序的眼光来看能抽象出一个类),这时就用内部类来描述这种事物。
内部类只有定义在成员变量的位置上时才能被private或static修饰
内部类位于成员变量的位置上时且非私有(非静态)有时:
1.适用于成员变量的规则,可以直接访问其所在类的成员(成员函数和成员变量),被private修饰的成员也可访问
2.若内部类中有和其所在类中同名的变量,要想访问外部类中的变量,格式为:外部类类名.this.变量名;(即外部类类名为外部类的引用)
3.此时外部类要想访问内部类就要创建内部类的对象,格式如下:
外部类名.内部类名 变量名=外部类对象.内部类对象;(私有时不能这样调用)
内部类位于成员变量的位置上时且非私有(静态)有时:
适用静态对象所适用的规则,
所以内部类中定义静态成员时内部类应为静态内部类
外部类中的静态成员要想访问一个内部类,根据静态成员所适用的规则,此内部类也必须是静态的
内部类位于外部类的局部变量(函数内部)的位置上时:
1.不可以被成员修饰符所修饰,即不能被private所修饰
2.可以直接访问外部类中的成员,因为还持有外部类的引用,但不可以访问它所在的局部中的变量,只能访问局部常量(java规定)
匿名内部类 (就是一个匿名子类对象,一种简写格式,主要为了调用方法,所以匿名内部类中的方法最好不要超过三个):
定义前提:必须继承一个父类或者实现接口
格式:
new 父类或接口(){
定义子类内容
} 可以理解为:一个带内容的”胖“对象。