Java笔记 内部类

时间:2022-11-30 19:53:39

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

内部类:类中之类

适用特点:类的内部具有可以抽象的事物(即此事物也有有属性和行为,用程序的眼光来看能抽象出一个类),这时就用内部类来描述这种事物。

 

内部类只有定义在成员变量的位置上时才能被private或static修饰

 

内部类位于成员变量的位置上时且非私(非静态)有时:

1.适用于成员变量的规则,可以直接访问其所在类的成员(成员函数和成员变量),被private修饰的成员也可访问

2.若内部类中有和其所在类中同名的变量,要想访问外部类中的变量,格式为:外部类类名.this.变量名;(即外部类类名为外部类的引用)

3.此时外部类要想访问内部类就要创建内部类的对象,格式如下:

    外部类名.内部类名    变量名=外部类对象.内部类对象;(私有时不能这样调用)

 

内部类位于成员变量的位置上时且非私有(静态)有时:

 适用静态对象所适用的规则,

所以内部类中定义静态成员时内部类应为静态内部类

外部类中的静态成员要想访问一个内部类,根据静态成员所适用的规则,此内部类也必须是静态的

 

内部类位于外部类的局部变量(函数内部)的位置上时:

1.不可以被成员修饰符所修饰,即不能被private所修饰

2.可以直接访问外部类中的成员,因为还持有外部类的引用,但不可以访问它所在的局部中的变量,只能访问局部常量(java规定)

 

匿名内部类 (就是一个匿名子类对象,一种简写格式,主要为了调用方法,所以匿名内部类中的方法最好不要超过三个):

定义前提:必须继承一个父类或者实现接口

格式:

new 父类或接口(){

    定义子类内容

}  可以理解为:一个带内容的”胖“对象。