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

来源:7-8 Java 中的方法内部类

三水朝山

2016-05-04 15:21

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回答

  • 慕村5328463
    2016-05-04 15:46:29
    已采纳

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

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

    如:

    MInner mi = new MInner();

            mi.print();


    三水朝山 回复慕村5328...

    方法原来是必须调用才能执行。。。

    2016-05-04 16:20:29

    共 3 条回复 >

  • 慕粉3285133
    2016-05-04 16:18:07

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

    三水朝山

    恩,明白了...

    2016-05-04 16:21:25

    共 1 条回复 >

  • 宇宙千雪
    2016-05-04 15:49:53
    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();
        }
    }


  • 慕粉3274195
    2016-05-04 15:48:42

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

  • 相信着能
    2016-05-04 15:47:41

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

  • 慕标5176381
    2016-05-04 15:46:11

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

  • 慕粉3285133
    2016-05-04 15:41:31

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

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

    加上这个就好了

    三水朝山

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

    2016-05-04 15:49:42

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530649 学习 · 6091 问题

查看课程

相似问题