成员是否就是属性?

来源:7-7 Java 中的静态内部类

勤奋学习的kid

2015-09-23 18:47

1.静态内部类不能直接访问外部类的非静态成员,不是说内部类都不能直接访问外部属性吗?(上一章)并且是说静态内部类可以直接访问外部静态成员?

2.静态内部方法中如果要调用外部类的属性,就用外部类名.属性吗?上一章不是外部类名.this.属性名吗?

写回答 关注

3回答

  • 无动于衷
    2015-09-23 23:04:40
    已采纳

    成员就是属性,你问的问题很好,我突然感觉我自己都不是很清楚了。有了这些想法,你可以自己去IDE中去试一下啊,不太清楚的地方再去百度。

    我个人的理解大约是这样的。静态的内部类是不能调用外部类非静态的成员;静态内部类可以直接访问外部静态成员;成员内部类可以调用外部类的不论是静态的还是非静态的成员。

    静态内部类只能调用外部类的静态属性,直接属性名就可以了,也可以外部类名.属性。

    外部类名.this.属性名调用的是静态内部类的非静态成员,应该是这样。

    勤奋学习的k...

    答疑很清晰

    2015-09-23 23:29:23

    共 1 条回复 >

  • Sniffer
    2015-10-10 19:56:34

    个人的理解不知道对不对:

    • 在创建普通内部类的实例时候,连带外部类实例一起创建了,所以有了外部类的普通成员。

    • 而在创建静态内部类实例的时候,不需要创建外部类的实例,所以外部类的普通成员自然也就不存在,所以无法访问。只能访问那些不需要实例也可以访问的静态成员。

    Sniffe...

    视频里面有说道: "1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 " 这就是创建了一个外部类的实例来访问其成员吧。。

    2015-10-10 20:06:47

    共 2 条回复 >

  • 天启之魂
    2015-09-23 23:34:55

    楼主你是不是说错了   

    1,内部类是可以直接访问外部类的成员

    2,而静态内部类则不能访问外部类的非静态成员,但是可以直接访问外部类的静态成员,就像主函数不能直接访问非静态成员一样

    3,静态内部类的方法中如果要调用外部类非静态属性只有通过对象名.属性来调用

    天启之魂 回复wswzh0...

    应该是成员,变量和方法都需要这样来调用

    2015-10-04 17:42:17

    共 2 条回复 >

Java入门第二季 升级版

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

530649 学习 · 6091 问题

查看课程

相似问题