i.show();直接进行调用吗?

来源:7-5 什么是 Java 中的内部类

songqi12so

2018-02-12 18:24

主要是这一句Inner i = hello.new Inner(); 如果把new当作一个内存分配的标识的话,是不是可以认为内部类其实并没有在内存中重新获取内存,而是使用的外部类的内存 并且是调用内部类的时候i.show();,显然并没有通过外部类来进行调用这是为什么呢?

写回答 关注

2回答

  • 慕圣8574004
    2018-02-12 21:49:48
    已采纳

    成员内部类需要先创建外部类,才能创建它自己的,这是因为每一个内部类都保存了一个对外部类的一个引用。这很好理解,因为你要实例化这个内部类,肯定是通过外部类的一个实例,而内部类保留的这个引用就是这个外部类实例。可以类比一下方法,你怎么使用一个类里面定义的xxx()方法?肯定是先new一个对象hello,然后再hello.xxx() 这样使用方法。你在定义一个内部类的时候,默认会生成此内部类的构造方法,如何使用此构造方法呢?跟使用普通方法一样。

    songqi...

    按照方法直接去理解就可以了吗?

    2018-02-18 13:56:29

    共 1 条回复 >

  • qq_Yu_51
    2018-02-12 22:05:10

    因为你这个show方法本来就是定义在内部类的,没必要通过外部类的对象来调用啊。而且外部类也不能直接访问和使用内部类的对象和方法,必须通过内部类的对象访问。。。

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530649 学习 · 6091 问题

查看课程

相似问题