关于静态内部类直接访问外部类的非静态成员 new 外部类().成员 能不能赋值

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

wxyxh蓝白碗

2020-01-10 17:10

//外部类

public class HelloWorld{

  private int num = 1;

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

  private static int score = 84;

  

  // 创建静态内部类

public     static     class SInner {

      // 内部类中的变量score

      int score = 91;

      

public void show() {

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

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

HelloWorld hello = new HelloWorld();

System.out.println(hello.num);//这句对的

public int a = hello.num;//这句错了

}

}


// 测试静态内部类

public static void main(String[] args) {

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

      SInner si = new SInner();

      

      // 调用show方法

si.show();

System.out.println(si.a);//这句错了

}

}

上面的这三句

public int a = hello.num;

System.out.println(si.a);

这两句是错的

System.out.println(hello.num);

这句是对的


写回答 关注

2回答

  • 陈清召
    2020-06-25 09:54:48

    不好意思,看着这个代码上的get方法,觉得作用会不会不大?

  • wxyxh蓝白碗
    2020-01-10 17:37:15

    已解决

    我把东西写在函数里了。。。

    下面是对的

    package com.test.second;


    //外部类

    public class test2 {

      private int num = 1;

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

      private static int score = 84;

      

      // 创建静态内部类

    public     static     class SInner {

          // 内部类中的变量score

          int score = 91;

          

    public void show() {

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

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

    }

    public int getNum() {

    return a;

    }

    // test2 hello = new test2();

    // private int a = hello.num;

    int a = new test2().num;

    }


    // 测试静态内部类

    public static void main(String[] args) {

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

          SInner si = new SInner();

          

          // 调用show方法

    si.show();

    System.out.println(si.a);

    }

    }


Java入门第二季 升级版

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

530643 学习 · 6091 问题

查看课程

相似问题