课程
/后端开发
/Java
/Java入门第二季 升级版
为什么外部类name需要HelloWorld.this.name
而内部类不需要HelloWorld呢
2019-02-16
源自:Java入门第二季 升级版 7-6
正在回答
因为内部和外部类拥有同名的变量。内部类是可以访问内部类及外部类的所有属性和方法的,但如果出现同名变量的话,按照就近原则访问。所以需要HelloWorld.this.name来指代距离较远的变量。
评论区上传一直失败,假象你处在一个房间A内,A有4个出口,其中一个出口名字为name,房间A外面还有一大的围栏B,B也有4个出口,其中也有扇门为name,如果只是告诉你去name出口,那默认情况下你会先去A房间的name门,而不是B的name门。
Ly要做学霸
仔细看看,你外部类定义了一个变量name,内部类定义了一个变量name,那么你输出的时候程序怎么区分这两个name呢?
所以才有了外部类、内部类的说法,一个name属于外部的,一个属于内部的,
HelloWorld.this.name
HelloWorld 外部类
this调用最近的对象,方法都可以
name变量
这条语句处于内部类,默认是访问当前类成员,也就是内部类,加也不影响,但没必要
Java里面还有一种说法叫做就近原则
内部类和外部类成员名称相同都是 name,需要区分使用,用 “外部类.this.成员名" 访问外部类成员,用"成员名" 直接访问内部类成员。
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
5 回答public HelloWorld() {
2 回答public HelloWorld与public class HelloWorld有什么区别?
3 回答/124/1842/NLBf/HelloWorld.java:7: error: ';' expected char HelloWorld star= new HelloWorld(); ^ 1 error
3 回答请问为什么最后HelloWorld hello2=new HelloWorld();会输出最后2行
2 回答HelloWorld o = new HelloWorld (); Inner inn = o.new Inner(); ;和 Inner inn =new Inner (); 怎么理解啊