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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聖手`书生 中级黑马   /  2013-4-7 19:42  /  2414 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 聖手`书生 于 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. }
复制代码

2 个回复

倒序浏览
static class Inner//静态内部类

07.        {

08.                static int x=4;

09.                static void function()

10.                {

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

12.                }

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