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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张吉日 中级黑马   /  2012-8-31 17:32  /  1964 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张吉日 于 2012-9-1 11:15 编辑

class Outter
{
        private int num;
        private void show()
        {
                System.out.println("老师辛苦了");
        }
        class Inter
        {
                public int amend(int num)//这里返回值类型是int型-------------------------------------问题在这里????????
                {        show();                 //为什么我的这个函数可以成功打印出其内容
                        return num;
                        
                        
                }
        
        }
        public void print()
        {
                Inter i = new Inter();
                Object obj = i.amend(15);
                System.out.println(obj);
        }
}

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 再好好去看下内部类视频哈

查看全部评分

5 个回复

倒序浏览
内部类分为四种,成员内部类、静态内部类、局部内部类、匿名内部类,你写的是成员内部类,在成员内部类中可以访问到外部类的私有属性和私有方法的,可以用Outer.this.show()调用,也可以直接写show(),但是如果内部类里也有一个show()方法时,直接写show()会调用内部类自己的show方法,用Outer.this.show()调用外部类的show方法,因为编译器不知道哪个是哪个了,给它区分一下

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
成员内部类可以调用外部类的方法,内部类的方法和外部类的方法不重名的情况下可以直接调用外部类的show(),如果重名可以加个外部类如Outer.this.show()来调用外部类的show方法

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 很给力!

查看全部评分

回复 使用道具 举报
首先,你的程序没有主函数,其次要在主函数中调用print方法就要把print方法静态
print方法静态之后,只能调用静态方法,所以内部类为静态方法,那么内部类也为静态内部类
所以print里面的调用可以直接类名调用

给你改过的程序:

class Outter
{
        private int num;
  public static void main(String[] args)   
  {
    print();
  }
        private void show()
        {
                System.out.println("老师辛苦了");
        }
        static class Inter
        {
                public static int amend(int num)
                {      
     new Outter().show();                 
                        return num;
                        
                        
                }
        
        }
        public static void print()
        {
                //Inter i = new Inter();
                Object obj = Inter.amend(15);
                System.out.println(obj);
        }
}

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 很给力!

查看全部评分

回复 使用道具 举报
http://jxiao105.blog.163.com/blog/static/206503091201242305121332/
回复 使用道具 举报
吴通 发表于 2012-8-31 22:00
首先,你的程序没有主函数,其次要在主函数中调用print方法就要把print方法静态
print方法静态之后,只能调 ...

谢谢~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马