黑马程序员技术交流社区

标题: 【已解决】内部类问题疑惑 [打印本页]

作者: 张吉日    时间: 2012-8-31 17:32
标题: 【已解决】内部类问题疑惑
本帖最后由 张吉日 于 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);
        }
}
作者: 袁艳超    时间: 2012-8-31 17:50
内部类分为四种,成员内部类、静态内部类、局部内部类、匿名内部类,你写的是成员内部类,在成员内部类中可以访问到外部类的私有属性和私有方法的,可以用Outer.this.show()调用,也可以直接写show(),但是如果内部类里也有一个show()方法时,直接写show()会调用内部类自己的show方法,用Outer.this.show()调用外部类的show方法,因为编译器不知道哪个是哪个了,给它区分一下
作者: 孙沛    时间: 2012-8-31 20:36
成员内部类可以调用外部类的方法,内部类的方法和外部类的方法不重名的情况下可以直接调用外部类的show(),如果重名可以加个外部类如Outer.this.show()来调用外部类的show方法
作者: 吴通    时间: 2012-8-31 22:00
首先,你的程序没有主函数,其次要在主函数中调用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);
        }
}


作者: 金肖    时间: 2012-9-1 00:25
http://jxiao105.blog.163.com/blog/static/206503091201242305121332/
作者: 张吉日    时间: 2012-9-1 11:14
吴通 发表于 2012-8-31 22:00
首先,你的程序没有主函数,其次要在主函数中调用print方法就要把print方法静态
print方法静态之后,只能调 ...

谢谢~~~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2