成员内部类 与 局部内部类
成员内部类
我们在外部类中定义一个成员内部类,这个内部类和成员变量成员方法是同级的
如何在外部获取内部类对象
内部类非私有
应为内部类非私有,所以我们可以通过以下格式获取内部类的对象
外部类 . 内部类 变量名称 = 外部类 . 内部类对象;
内部类私有
内部类作为外部类的成员,是可以用private来修饰的,使用private修饰外界无法直接获取该对象的,同时我们也没办法通过相关
的类型来进行接收,我们可以在外部类中提供相关的get/set方法来进行处理
public class OOPj { public static void main(String[] args) { Ou.Inner inner = new Ou().new Inner(); inner.show(); Ou o = new Ou(); o.setInner(); System.out.println(o.getInner()); //可以获取内部类对象但是没法用变量来接收,没法访问相关的属性和方法 o.getInner(); } } /** * 外部类 */ class Ou{ /** * 内部类 */ private String name="张三"; class Inner{ public void show(){ System.out.println(name); } } public void setInner(){ Inner in = new Inner(); in.show(); } public Inner getInner(){ Inner in = new Inner(); return in; } void info(){ } }
当变量名相同的情况
当外部类成员变量和内部类成员变量及内部类方法中的局部变量同名的情况下如何处理
class Ou{ /** * 内部类 */ private String name="张三"; private int age = 10; class Inner{ private int age = 20; public void show(){ int age = 30; System.out.println(name); System.out.println(age);//内部类的局部变量 System.out.println(this.age);//内部类的成员变量 System.out.println(Ou.this.age);//获取外部类的成员变量 } }
局部内部类
成员内部类:可以理解为和成员变量同级
局部内部类:可以理解为和局部变量同级的内部类
public class OOP2 { public static void main(String[] args) { Out out = new Out(); out.show(); } } class Out{ int num = 20; /** * 在JDK1.8之后把局部内部类中使用的外部方法的局部变量默认的提升为final * 在JDK1.8之前这里会强制要求我们将局部变量声明为final类型 */ public void show(){ num = 30; //定义一个局部内部类 class Inner{ public void info(){ System.out.println("inner执行了.."+num); } } //使用内部类对象 调用其中的方法才会执行 Inner inner = new Inner(); inner.info(); System.out.println(num); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix