java内部类如何被外部引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java内部类如何被外部引用相关的知识,希望对你有一定的参考价值。

内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为Public即可。

class Outer
private int size=10;
public class Inner //被外部引用,必须声明为public
public void doStuff()
System.out.println(++size);


public class TestInner
public static void main(String[] args)
Outer a =new Outer();
Outer.Inner b=a.new Inner();
b.doStuff();



这个是张孝祥书里面的, 被外部引用要把内部类声明为PUBLIC ,为什么我把内部类Inner前的public去掉了 运行结果也一样?

将public去掉,则默认为friendly,即友元。
而在同一个包中的友元中的类是可以被引用的。
参考技术A Outer a =new Outer(); 因为你加了这个,追究说明在你下面那个类里面添加了上面的类里面的东西,可以随时随地引用的不过不要忘记导入包

内部类

JAVA 的内部类,如果是静态的,则只是一个层次结构多了一层而以。

但是如果不是静态的,做为一个实例类型的内部类。那么这个内部类就拥有它所属的外部类的实例对象的引用,内部类不释放,那么所属的外部类也不会被释放。

创建一个内部类对象的实例:

  1. 需要有一个外部类的实例对象;

    Outer out = new Outer();

  2. 通过这个外部类的实例来创建它的内部类对象;

    Inner in = out.new Inner();

  3. 在内部类中可以直接使用所属外部类的一切资源,同时还包括外部类的this;

    在内部类中使用外部类的this 需要明确指定:Outer.this; 

    使用自己的this 则直接使用即可:this;

以上是关于java内部类如何被外部引用的主要内容,如果未能解决你的问题,请参考以下文章

[Kotlin] 内部类

java 内部类和外部类的关系

Java内部类引用外部类中的局部变量为何必须是final问题解析

Java内部类引用外部类中的局部变量为何必须是final问题解析

java 匿名内部类

为啥内部类的private变量可被外部类直接访问