java基础之内部类介绍,四种内部类,匿名内部类,局部内部类,成员内部类,静态内部类

java基础之内部类:

一、基本介绍:
一个类的内部又完整的嵌套了另一个类结构,被嵌套的类成为内部类;嵌套其他类的类成为外部类。
二、基本语法
class Outer {//外部类
	class Inner{//内部类
	}
}
class Other{//外部其它类
}
三、内部类的分类:
1.定义在外部类局部位置上(比如方法内)
(1)局部内部类(有类名);
(2)匿名内部类(没有类名);
2.定义在外部类的成员位置上:
(1)成员内部类(没有static修饰)
(2)静态内部类(有static修饰)
四、局部内部类的使用:局部内部类是定义在外部类的局部位置,比如方法中,而且有类名。
1.可以直接访问外部类的所有成员,包含私有的;
2.不能添加访问修饰符,因为它的地址就是一个局部变量。局部变量是不能使用修饰符的。但是可以使用final修饰,因为局部变量也可以使用final
3.作用域:仅仅在定义它的方法或代码块中;
4.局部内部类--访问-->外部类的成员【访问方式:直接访问】
5.外部类--访问-->局部内部类的成员
访问方式:创建对象,再访问(注意:必须在作用域内)
记住:
(1)局部内部类定义在方法中、代码块;
(2)作用域在方法体或者代码块中;
(3)本质仍然是一个类;
6.外部其他类--不能访问-----> 局部内部类(因为局部内部类地位是一个局部变量)
7.如果外部类和局部内部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。
五、匿名内部类的使用:本质是类、内部类、该类没有名字、同时还是一个对象。
说明:匿名内部类是定义在外部类的局部位置,比如方法中,并且没有类名
1.匿名内部类的基本语法:
new 类或接口(参数列表){
	类体
};
2.匿名内部类的语法比较奇特,匿名内部类既是一个类的定义,同时它本身也是一个对象,因此从语法上看,它既有定义类的特征,也有创建对象的特征。
3.可以直接访问外部类的所有成员,包含私有的;
4.不能添加访问修饰符,因为它的地位就是一个局部变量;
5.作用域:仅仅在定义它的方法或代码块中;
6.匿名内部类---访问--->外部类成员【访问方式:直接访问】。
7.外部其他类--不能访问--->匿名内部类(因为内部类地位是一个局部变量)
8.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。
六、成员内部类的使用
1.可以直接访问外部类的所有成员,包含私有的;
2.可以添加任意访问修饰符(public、protected、默认、private),因为她的地位就是一个成员。
3.作用域和外部类的其他成员一样,为整个类体;
4.成员内部类---访问-->外部类;(访问方式 直接访问)
5.外部类---访问--->内部类 访问方式(先创建对象,再访问)
6.外部其他类---访问--->成员内部类
7.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。
七、静态内部类:是定义在外部类的成员位置,并且有static修饰
1.可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态变量;
2.可以添加任意访问修饰符(public、protected、默认、private),因为他的地位就是一个成员;
3.作用域:同其他成员,为整个类体
4.静态内部类 - - 访问--->外部类 (访问方式:直接访问所有静态成员)
5.外部类---访问---->静态内部类 (访问方式:创建对象,再访问)	
6.外部其他类---访问---->静态内部类()
7.如果外部类和静态内部类的成员重名时,静态内部类访问时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.成员)去访问。

每日金句分享:生命必须有裂缝,阳光才能照进来!

猜你喜欢

转载自blog.csdn.net/m0_52271574/article/details/121733171