为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样不行?用对象外部类调用外部类方法,结果无法执行到内部类方法?

ublic class HelloWorld 

{

    // 外部类中的show方法

    public void show() 

    { 

// 定义方法内部类

   final int a=25;

        int b=13;

        class MInner

        {

            int c=2;

            public void print()

            {

             System.out.println("访问a:"+a);

             System.out.println("访问c:"+c);

            }

        }

    }

    public static void main(String[] args)

    {

        HelloWorld mo=new HelloWorld();

        mo.show();

    }

}


正在回答

7 回答

因为你在show()方法中没有调用内部类的print()方法;

你可以在show()中生成一个内部类对象,用这个对象调用print()方法;

如:

MInner mi = new MInner();

        mi.print();


0 回复 有任何疑惑可以回复我~
#1

三水朝山 提问者

意思是说,运行只会从对象作为入口运行方法?如果没有创建内部类对象,其实有方法也无法执行?
2016-05-04 回复 有任何疑惑可以回复我~
#2

慕村5328463 回复 三水朝山 提问者

因为方法内部类的方法的作用域只在内部类中,你无法通过外部类的对象调用内部类方法,而方法必须调用才会执行,而你说的程序入口是在main方法.应该是这样吧,我也是新手.
2016-05-04 回复 有任何疑惑可以回复我~
#3

三水朝山 提问者 回复 慕村5328463

方法原来是必须调用才能执行。。。
2016-05-04 回复 有任何疑惑可以回复我~

因为你这样子调用show方法,show方法里面根本就没做啥事,肯定是空白哦。

0 回复 有任何疑惑可以回复我~
#1

三水朝山 提问者

恩,明白了...
2016-05-04 回复 有任何疑惑可以回复我~
package sterning;

public class HelloWorld 
{
    // 外部类中的show方法
    public void show() 
    { 
     // 定义方法内部类
        final int a=25;
        int b=13;
        class MInner
        {
            int c=2;
            public void print()
            {
             System.out.println("访问a:"+a);
             System.out.println("访问c:"+c);
            }
        }
        System.out.println("Yes");
        MInner mi=new MInner();
        mi.print();
    }
    public static void main(String[] args)
    {
        HelloWorld mo=new HelloWorld();
        mo.show();
    }
}


0 回复 有任何疑惑可以回复我~

同楼上,要想调用内部类的方法,就一定要创建内部类的对象。

0 回复 有任何疑惑可以回复我~

MInner mi=new MInner();
mi.print();

0 回复 有任何疑惑可以回复我~

因为没有new内部类的对象,只能执行到外部方法。

0 回复 有任何疑惑可以回复我~

因为你在show方法中没有new出MInner对象,然后调用print()方法。所以才会报错。

MInner mi=new MInner();
mi.print();

加上这个就好了

0 回复 有任何疑惑可以回复我~
#1

三水朝山 提问者

不会报错,只会运行空白,我意思是不是在内部类中,一定要先把内部方法作为对象调用出来,然后再通过外部类对象调用外部方法才可以?只调用外部方法是不会执行到内部方法中去的?
2016-05-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这样不行?用对象外部类调用外部类方法,结果无法执行到内部类方法?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信