关于内部类的使用

📅 2026/7/28 18:06:52 👁️ 阅读次数 📝 编程学习
关于内部类的使用

内部类的概述:
把类定义在其他类的内部,这个类就叫做内部类
例如:在类A中定义类B,那么类B就叫做内部类

内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,就必须创建对象

内部类的位置:

位置概述说明
成员位置在成员位置定义的类,就称为成员内部类
局部位置在局部位置定义的类,就称为局部内部类

代码显示说明内部类和内部类

classOuter{classInner{//成员内部类}publicvoidshow(){classInner2{//局部内部类}}}classTest{publicstaticvoidmain(String[]args){//主方法}}

成员内部类:
如何直接访问内部类的成员?
格式:外部类名 . 内部类名 对象名 = 外部类对象 . 内部类对象;
代码显示访问内部类成员

classOuter{privateintnum=10;//内部类可以直接访问外部类的成员,包括私有classInner{publicvoidshow(){System.out.println(num);}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类对象oi.show();}}

内部类加入修饰符的使用

内部类加入私有化修饰符的使用
案例代码显示说明
案例:假如一个人要做心脏搭建手术,但是并不是所有医生都可以做心脏搭建手术,所以需要将搭建手术方法进行私有化,只让这方面的医生进行手术

classBody{privateclassHeart{publicvoidoperator(){System.out.println("恭喜!搭建成功!");}}publicvoidmether(intnum){//加入num的值为1的话,就可以进行手术if(num==1){Heart h=newHeart();h.operator();}else{System.out.println("很遗憾!搭建失败!");}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Body b=newBody();b.mether(1);//恭喜!搭建成功!}}

内部类加入静态修饰符的使用
当内部类被静态修饰后的访问
格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
代码显示说明
方法一

classOuter{staticclassInner{publicvoidshow(){System.out.println("恭喜!访问成功!");}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter.Inner();oi.show();}}

方法二

classOuter{publicstaticclassInner{publicvoidshow(){System.out.println("恭喜!访问成功!");}}publicvoidmether(){Inner i=newInner();i.show();}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer o=newOuter();o.mether();}}

内部类访问对应外部类的变量

成员内部类访问对应外部类的变量

注意:
1.内部类和外部类没有继承关系
2.访问外部类的变量的时候,通过外部类名限定 this 对象
代码显示说明
方式一

classOuter{publicintnum=10;classInner{publicvoidshow(){System.out.println(newOuter().num);//通过创建外部类的对象进行访问}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类的对象oi.show();}}

方式二

classOuter{publicintnum=10;classInner{publicvoidshow(){System.out.println(Outer.this.num);//外部类名限定this的访问对象}}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer.Inner oi=newOuter().newInner();//创建内部类对象oi.show();}}

局部内部类访问局部变量
1.可以直接访问外部类的成员
2.在局部位置可以创建内部类对象,通过对象访问内部类方法,来使用内部类功能
内部类访问局部变量的时候,该局部变量必须是final修饰
代码显示说明

classOuter{publicvoidshow(){finalintnum=10;classInner{publicvoidmether(){System.out.println(num);//只能访问用final修饰的局部变量}}Inner i=newInner();//创建内部列对象i.mether();//调用局部内部类}}classInnerClassDemo{publicstaticvoidmain(String[]args){Outer o=newOuter();o.show();}}