A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Alexander 中级黑马   /  2014-3-3 19:23  /  867 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中,经常会遇到,类A中有内部类B,而且各自都有自己的变量和方法
现在,下面这道题,就是想问,怎样才能获得3个x的值?
class A {
            int x = 1;
            class B {
                int x = 2;
                void func() {
                    int x = 3;
                    System.out.println( ??? );
                }
            }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

5 个回复

倒序浏览
A.this.x=1
this.x=2
x=3

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
如下调用


  1. public class Test1 {
  2.         public static void main(String[] args) {
  3.                 A a = new A();
  4.         System.out.println("a.x="+a.x );
  5.         B b = a.new B();
  6.         System.out.println("b.x="+b.x );
  7.         b.func();
  8.         
  9.         }
  10. }

  11. class A {
  12.     int x = 1;
  13.     class B {
  14.         int x = 2;
  15.         void func() {
  16.             int x = 3;
  17.             System.out.println("x="+x );
  18.         }
  19.     }   
  20. }
复制代码
回复 使用道具 举报
个人认为可以这样,简单写下:println(new A().x+this.x+x),不知对不对
回复 使用道具 举报
首先第一个x的实现应该为A.this.x你可以理解为A类中的这个x,其实this就是那个类对用就是指向那个类的对象;
自然B类中的x应该直接this.x就行了,最后是局部变量的作用域,直接X;

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
对于func中缺的那句语句
直接打印x就是3
this.x是2
A.this.x是1

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马