为了账号安全,请及时绑定邮箱和手机立即绑定

成员是否就是属性?

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

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

正在回答

3 回答

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

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

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

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

0 回复 有任何疑惑可以回复我~
#1

勤奋学习的kid 提问者

答疑很清晰
2015-09-23 回复 有任何疑惑可以回复我~

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

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

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

0 回复 有任何疑惑可以回复我~
#1

Sniffer

this关键字应该指代的是当前实例,但是静态内部类创建实例的时候没有创建外部类的实例,自然也就没办法this?
2015-10-10 回复 有任何疑惑可以回复我~
#2

Sniffer

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

楼主你是不是说错了   

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

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

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

0 回复 有任何疑惑可以回复我~
#1

wswzh0329

。。第三点(对象名.属性)怎么理解?非静态属性是指非静态成员变量吗?调用非静态属性就是使用外部类中的非静态变量?变量是指对象的属性,所以要先创建一个对象?然后用(对象名.变量名)?
2015-10-04 回复 有任何疑惑可以回复我~
#2

天启之魂 回复 wswzh0329

应该是成员,变量和方法都需要这样来调用
2015-10-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530701    人
  • 解答问题       6091    个

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

进入课程

成员是否就是属性?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信