成员内部类和局部内部类

成员内部类

我们在外部类中定义一个成员内部类,这个内部类和成员变量成员方法是同级的

复制代码
/**
 * 外部类
 */
class Outter{
    private String name = "张三";

    /**
     * 内部类
     */
    class Inner{
        public void show(){
            System.out.println(name);
        }
    }
    void info(){

    }
}
复制代码

如何在外部获取内部类对象

内部类非私有

格式:

外部类名.内部类名 对象名 = 外部类对象.内部类对象;
复制代码
public class OOPDemo01 {
    public static void main(String[] args) {
        Outter.Inner inner = new Outter().new Inner();
        inner.show();
    }
}

/**
 * 外部类
 */
class Outter{
    private String name = "张三";

    /**
     * 内部类
     */
    class Inner{
        public void show(){
            System.out.println(name);
        }
    }
    void info(){

    }
}
复制代码

运行结果:

内部类私有

内部类作为外部类的成员,那么是可以用private来修饰的,既然用private修饰那也就意味着外界是没办法直接获取对象的,

同时我们也没法通过相关的类型来接收,但是我们可以在外部类中提供相关的getter/setter方法来处理

复制代码
package com.example.ObjectOriented.Interface1.oop10;

public class OOPDemo01 {
    public static void main(String[] args) {
        Outter outter = new Outter();
        outter.setInner();
        System.out.println(outter.getInner());
    }
}

/**
 * 外部类
 */
class Outter{
    private String name = "张三";

    /**
     * 内部类
     */
    private class Inner{
        public void show(){
            System.out.println(name);
        }
    }
    public void setInner(){
        Inner inner = new Inner();
        inner.show();
    }
    public Inner getInner(){
        Inner inner = new Inner();
        return inner;
    }
    void info(){

    }
}
复制代码

运行结果:

 

 

 

 

 

局部内部类

成员内部类我可以理解为和成员变量同级,那么局部内部类我们也可以理解为和局部变量同级的内部类

复制代码
package com.example.ObjectOriented.Interface1.oop10;

public class OOPDemo02 {
    public static void main(String[] args) {
        Outter02 outter02 = new Outter02();
        outter02.show();
    }
}
class Outter02{
    int num = 20;
    public void show(){
        num =30;
        /**
         * 定义局部内部类
         */
        class Inner{
            public void info(){
                System.out.println("info。。。");
            }
        }
        Inner inner = new Inner();
        inner.info();
        System.out.println(num);
    }

}
复制代码

运行结果:

 
posted @   xjw12345  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示