黑马程序员技术交流社区

标题: 内部类的静态变量问题 [打印本页]

作者: 聖手`书生    时间: 2013-4-7 19:42
标题: 内部类的静态变量问题
本帖最后由 聖手`书生 于 2013-4-7 21:00 编辑

从代码中,如果我不定义内部类中的静态变量static int x=4;则x输出的值默认就是外部类中的静态成员变量private static  int x = 3;  如果我在内部类中定义了静态成员变量 static int=4;则默认x值就是4了,那么如果这时候我该如何调用外部类中的成员变量 int x=3 呢? 如果输出结果用this.x 的话,语法错误(静态对象不能引用非晶态变量this)  求解这时应该怎样访问外部类的成员变量。
  1. class Outer
  2. {
  3.         private static  int x = 3;

  4.         
  5.         static class Inner//静态内部类
  6.         {
  7.                 static int x=4;
  8.                 static void function()
  9.                 {
  10.                         System.out.println("innner :"+x);
  11.                 }
  12.         }

  13.         static class Inner2
  14.         {
  15.                 void show()
  16.                 {
  17.                         System.out.println("inner2 show");
  18.                 }
  19.         }

  20.         public static void method()
  21.         {
  22.                 new Inner2().show();
  23.         }

  24. }


  25. class  InnerClassDemo2
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 Outer.Inner.function();
  30.         }
  31. }
复制代码

作者: 王薪婷    时间: 2013-4-7 20:07
static class Inner//静态内部类

07.        {

08.                static int x=4;

09.                static void function()

10.                {

11.                        System.out.println("innner :"+Outer.x); //这里直接加外部类名就可以了

12.                }

13.        }

作者: zhou5852    时间: 2013-4-9 13:25
还有一种 叫 qualified-this  的this用法  专门用来解决 在嵌套类中由于命名的相同而产生的。具体用法是
Outer.this.x;  除了之外  还有 Outer.super~~~也称qualified-super   可以访问外部类的父类的成员。
建议看一本 叫 The java Programming Language  James goslin  java之父 写的书 那里有基础的强化知识。
一般是第四版的 第五版的刚出 网上有chm格式的  也有人翻译了中文版的是  Java程序设计语言(阿诺德4th)
感觉大家刚开始基础都是这样。java基础确实会很麻烦的事情  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2