Outer.this.b

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

PaulPierce

2016-03-04 01:12

 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
(为什么这里第一个输出访问不到外部类中的84分)

//外部类

public class HelloWorld {

    

    // 外部类中的静态变量score

    private static int score = 84;

    

    // 创建静态内部类

public    static      class SInner {

        // 内部类中的变量score

        int score = 91;

        

public void show() {

System.out.println("访问外部类中的score:" +HelloWorld.this.score            );

System.out.println("访问内部类中的score:" + score);

}

}


// 测试静态内部类

public static void main(String[] args) {

// 直接创建内部类的对象

        SInner si=new SInner();

        

        // 调用show方法

si.show();

}

}


写回答 关注

3回答

  • 先生_克制点
    2016-03-04 01:44:22
    已采纳

    System.out.println("访问外部类中的score:" +HelloWorld.this.score            );

    把HelloWorld(类名)去掉,因为变量名重复,局部变量优先,但是this(代表当前变量)已经做了区分,所以this.score代表的是外部类的变量

    PaulPi...

    非常感谢!

    2016-03-09 00:34:53

    共 1 条回复 >

  • laoliang
    2016-03-17 16:43:25

    静态内部类
     用static修饰的内部类,有以下特点:
     (1) 静态内部类不能直接访问外部类的非静态成员,但是可以通过new 外部类().成员的方式访问
     (2) 若是外部类的静态成员与静态类的成员名称相同,可以通过"类名.静态成员"访问外部类的静态成员;若名称不相同,则可直接通过成员名直接调用
     (3) 创建静态内部类的对象时,不需要外部类的对象;
         创建方法:内部类 对象名 = new 内部类();

  • t峰01
    2016-03-08 15:35:13

    外部类中的score  是一个静态变量,不用创建对象即可访问,但是现在内部和外部类有一个同名的变量;为了区分,就需要说明score到底是哪一个,要外部的,就是HelloWorld.score    内部的直接调用     假如外部类中的score是一个非静态变量,则需要加this

Java入门第二季 升级版

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

531187 学习 · 6326 问题

查看课程

相似问题