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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Inspur 中级黑马   /  2013-9-16 10:37  /  2028 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-17 20:02 编辑

public class Outer{
  public static void function(){
    final int x = 3;
    class Inner{
      void show(){
          System.out.println(x);
        }
    }
}
  public static void main(String[] args){
             //执行代码
   }

}

请问在main方法怎么调用Inner类中的方法show()?

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

13 个回复

倒序浏览
new Outer.Inner().show()就行了
回复 使用道具 举报
本帖最后由 路边小色狼 于 2013-9-16 11:19 编辑
麦子609 发表于 2013-9-16 10:42
new Outer.Inner().show()就行了


不行的,。Inner是外部类方法里的内部类不能调用啊
回复 使用道具 举报
本帖最后由 杨增坤 于 2013-9-16 11:17 编辑

  1. public class Outer {
  2. public static void function() {
  3. final int x = 3;
  4. class Inner {
  5. void show() {
  6. System.out.println(x);
  7. }

  8. }
  9. new Inner().show();
  10. }

  11. public static void main(String[] args) {
  12. // 执行代码
  13. Outer.function();

  14. }

  15. }
复制代码
方法中的内部类相当于局部变量,那么在另外一个类中,是不能调用方法中的局部变量的,那么可以再本方法中自己调用,输出,然后外部类调用方法。这样才可以,希望你能理解!
回复 使用道具 举报
你这内部类放在funtion()方法里啊,。是弄错了还是故意的啊,。不知道怎么调用,
求大神
回复 使用道具 举报
路边小色狼 发表于 2013-9-16 11:18
你这内部类放在funtion()方法里啊,。是弄错了还是故意的啊,。不知道怎么调用,
求大神 ...

毕老师课上讲的,我突发奇想,看看这样可以不,到底是怎么弄
回复 使用道具 举报
2012 中级黑马 2013-9-16 11:46:31
7#
Inner是一个方法内部类(局部内部类),就像类中的局部变量一样,外部是不允许调用的。
但你可以在Outer类中通过方法的方式向外暴露,通过调用这个方法来调用局部类部类中的show方法。

希望对你有所帮助!
回复 使用道具 举报
杨增坤 发表于 2013-9-16 11:14
方法中的内部类相当于局部变量,那么在另外一个类中,是不能调用方法中的局部变量的,那么可以再本方法中自 ...

还是杨哥一语惊醒梦中人啊!回头看了半天,这才搞懂的事,你一会儿就解答了,哈哈
回复 使用道具 举报
在你的第四行代码"class Inner {"前面加static这样就行了,以下我的源码
package com.itheima;


class Test6_A {                                                                int x = 1;
        static class Test6_B {                                //添加static修饰
                  int x = 2;
                  void func() {
                         int x = 3;
                     System.out.println(new Test6_A().x );                //打印Test6_A中的x=1;
                     System.out.println(this.x );                                //打印Test6_B6中的x=2;
                     System.out.println(x );                                        //打印Test6_A中func()方法中的x=3;
                        }
                    }
        public static void main(String[] args) {
                Test6_B test6_B=new Test6_B();
                test6_B.func();
        }
}

评分

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

查看全部评分

回复 使用道具 举报
http://bbs.itheima.com/thread-84037-1-1.html
希望这个帖子对你有帮助
回复 使用道具 举报
楼主,你好,
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!
回复 使用道具 举报
在外部类里面写一个方法,调用内部类里面的show() 然后在main里面调用外部类的方法即可
回复 使用道具 举报
看到这个题目的时候,我懵了,我才知道原来那样也是不报错的,但是似乎没有办法去得到show();
回复 使用道具 举报
比烟花寂寞_neve 发表于 2013-9-17 01:52
看到这个题目的时候,我懵了,我才知道原来那样也是不报错的,但是似乎没有办法去得到show(); ...

因此我将代码改成这样的内部类形式:

[img=425,304]file:///C:/Users/Administrator/AppData/Roaming/Tencent/Users/921638027/QQ/WinTemp/RichOle/[BB807N%7D]NHH(ZJI(Z)PCAJ.jpg[/img]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马