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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马_白马 中级黑马   /  2014-9-19 20:29  /  1555 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马_白马 于 2014-9-19 20:38 编辑

复制代码
  1. package Test;
  2. //解决:当内部类存在时,不同位置出现同名函数时,该如何正确调用。
  3. public class InnerClassDemo {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 new Outer().fun(30);
  7.         }

  8. }
  9. class Outer{
  10.         String info="1";
  11.         public void fun(final int temp){//当内部类出现在局部位置时,
  12.                 String info="2";
  13.                 class Inner{
  14.                         String info="3";
  15.                         public void print(){
  16.                                 String info="4";
  17.                                 System.out.println("自己方法的属性="+info);//4
  18.                                 System.out.println("内部类的属性="+this.info);//3
  19.                                 System.out.printf("外部类上方法的变量=");//2   就是这里?????
  20.                                 System.out.println("外部类的方法上参数="+temp);//30
  21.                                 System.out.println("外部类上方法的变量="+new Outer().info);//1
  22.                         }
  23.                 };
  24.                 new Inner().print();
  25.         }
  26.        
  27. }
复制代码

请会的同学,不吝赐教,O(∩_∩)O谢谢

8 个回复

倒序浏览
字太小 看不清 请直接帖代码
回复 使用道具 举报
xplcc 发表于 2014-9-19 20:31
字太小 看不清 请直接帖代码

它的代码粘上去不能更改,唉!捣鼓了好一会儿
回复 使用道具 举报
顶一个!
回复 使用道具 举报
再顶     
回复 使用道具 举报
我还顶     
回复 使用道具 举报
备战 中级黑马 2014-9-20 14:34:02
7#
顶一个。
回复 使用道具 举报
lipc 中级黑马 2014-9-20 16:46:11
8#
new outer().new inner().info    应该是这样。。。
回复 使用道具 举报
在一个类中是不能调用另外一个类方法中定义的局部变量的,若想调用可以按一下几种方法来实现:
1、将局部变量定义为类中的成员变量,然后通过对象来调用
2、将局部变量用final关键字定义为常量,然后通过类名.常量名来调用
3、若方法的返回值是void,可以修改方法的返回值类型为局部变量的类型,然后在方法的最后一行加上return 局部变量;就可以通过调用此方法来获得该局部变量;
题中,你所指的这种情况,是不可以的。除非按以上三种方法适当修改代码完成。别无它法;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马