调用内部类的两种方式

class Outter {
    private int a = 10;

    class Innner {
        public void show() {
            System.out.println(a);
        }
    }

    public void show1() {
        Innner o = new Innner();
        o.show();
    }
}

class Demo1 {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.show1();
    }
}

内部类就是嵌套在外部类里面的一个类,上面代码通过外部类的方法来创建内部类对象内部类对象进行调用自己的方法,然后通过创建外部类对象来实现对内部类的方法的调用。

class Outter {
    private int a = 10;

    class Innner {
        public void show() {
            System.out.println(a);
        }
    }

}

class Demo1 {
    public static void main(String[] args) {
        Outter.Innner o = new Outter().new Innner();
        o.show();
    }
}

这种调用内部类来的更爽快一点,直接调用。

私有化内部类。

有人会问,既然第二种方式这么爽,为什么还会有第一种方式?
当你的内部类的方法是私有时,你可以定义成私有内部类,私有的你就无法访问,你直接创建内部类访问它就没有任何意义,所以你可以使用第一种方式来实现。

class Outter {

    private class Innner {
        public void cut() {
            System.out.println("切除你的心脏");
        }
    }

    public void right(String a) {
        if (a == "这是坏蛋的心脏") {
            Innner i = new Innner();
            i.cut();
        }
    }
}

class Demo1 {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.right("这是坏蛋的心脏");
    }
}

一般的内部类(成员内部类)可以访问外部类的私有变量,但不能访问静态的变量要想访问只能再加个final

静态内部类里只能存在静态变量,直接调用静态内部类的形式会发生变化:
Outter.Innner o = new Outter.new Innner();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容