java基础篇 之 非静态内部类

什么是非静态内部类:
public class Outer {
    Outer() {
        System.out.println("我是外部类");
    }

    class Inner {
        Inner() {
            System.out.println("我是内部类");
        }
    }

}

如上所示,Inner就是一个非静态内部类。

我们需要的知道是:

  1. 非静态内部类默认持有一个外部类对象的引用
  2. 非静态内部类有外部类对象中所有对象跟属性的访问权限
.this跟.new的使用:

我们可以在内部类对象中,使用外部类名.this获取一个外部类对象,像这样:

 class Inner {
        Inner() {
        Outer out = Outer.this;
            System.out.println("我是内部类");
        }
    }

这实际上就是我们说的内部类中,默认持有一个外部类的对象的引用。

我们在创建一个内部类对象时需要用到.new语法,像这样:

Outer.Inner inner = new Outer().new Inner();
posted @ 2019-05-10 00:43  程序员DMZ  阅读(183)  评论(0编辑  收藏  举报