黑马程序员技术交流社区

标题: 内部类的问题 [打印本页]

作者: 猪油炒鸡蛋    时间: 2015-5-18 13:45
标题: 内部类的问题
class Demo3_Innerclass{

        public static void main(String[] args){
               
                Outer.Inner oi = new Outer.Inner();   //第五行求解
                oi.method();
               
                Outer.Inner2.method();
        }
}


class Outer{

        static class Inner{
       
                public void method(){
                        System.out.println("HelloWorld");
                }
        }
        static class Inner2{
       
                public static void method(){
                        System.out.println("12345");
                }
        }

}
作者: 猪油炒鸡蛋    时间: 2015-5-18 13:46
为什么第五行写成        Outer.Inner oi = new Outer().new Inner();就报错了呢
作者: 猪油炒鸡蛋    时间: 2015-5-18 13:48
class Test1{

        public static void main(String[] args){
                Outer.Inner oi = new Outer().new Inner();  //第四行
                oi.show();
        }
}


class Outer{

        public int num = 10;
        class Inner{
       
                public int num = 20;
                public void show(){
                        int num = 30;
                        System.out.println(num);
                        System.out.println(this.num);
                        System.out.println(Outer.this.num);
                       
                }
        }
}






这个的第四行写成      Outer.Inner oi = new Outer.Inner(); 也报错呢
作者: 猪油炒鸡蛋    时间: 2015-5-18 13:49
有木有大神前来相助啊。。
作者: 猪油炒鸡蛋    时间: 2015-5-18 14:10
然而半个小时过去了:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(
作者: xgd6612    时间: 2015-5-18 14:14
....

不能那么调用啊
class Outer{

         static class Inner{
         
                 public void method(){
                         System.out.println("HelloWorld");
                 }
         }
         static class Inner2{
         
                 public static void method(){
                         System.out.println("12345");
                 }
         }

}
  这是两个函数 怎么调用去掉前面的outer
作者: mmakun    时间: 2015-5-18 14:22
没有什么问题啊
作者: 猪油炒鸡蛋    时间: 2015-5-18 14:24
xgd6612 发表于 2015-5-18 14:14
....

不能那么调用啊

调用没问题啊,第5行和第四行都没问题。我就是问为什么两种调用方法不一样
作者: 猪油炒鸡蛋    时间: 2015-5-18 14:27
Demo3_Innerclass:Outer.Inner oi = new Outer.Inner();
Test1: Outer.Inner oi = new Outer().new Inner();  

这两个类的调用方法为什么不能一样呢
作者: xgd6612    时间: 2015-5-18 14:43
你不是问错误吗?

作者: xgd6612    时间: 2015-5-18 14:53
我去 我终于明白你在说什么了 ,刚才在打lol 不好意思啊
这个调用是因为 你这两个函数里面 有一个有static 修饰 有一个没有 static修饰 视频里面我记得有讲的   第六天第一个视频 static关键字的视频 我刚去给你找出来~~~
被 static  修饰的可以直接被类名调用 所以不用加()
作者: xgd6612    时间: 2015-5-18 14:54
猪油炒鸡蛋 发表于 2015-5-18 14:27
Demo3_Innerclass:Outer.Inner oi = new Outer.Inner();
Test1: Outer.Inner oi = new Outer().new Inner( ...

老夫回复 了~~~顺便水一下 嘿嘿 ~~
作者: 猪油炒鸡蛋    时间: 2015-5-18 15:01
xgd6612 发表于 2015-5-18 14:53
我去 我终于明白你在说什么了 ,刚才在打lol 不好意思啊
这个调用是因为 你这两个函数里面 有一个有static ...

你在上基础班还是就业班啊  还有时间玩游戏啊。。
作者: 猪油炒鸡蛋    时间: 2015-5-18 15:04
差不多懂了
作者: xgd6612    时间: 2015-5-18 15:08
额  我大四 在自学~~~ 学得差不多了  下个月去面试。本来想这个月面试的 但是 我的毕业答辩在6.24号,只能报名7.11号的班 ,我问了下 老师 他们说如果5月面试 到时候要在面试一次 说中间隔的时间太长 所以我在等6月面试~~
作者: 猪油炒鸡蛋    时间: 2015-5-18 15:29
xgd6612 发表于 2015-5-18 15:08
额  我大四 在自学~~~ 学得差不多了  下个月去面试。本来想这个月面试的 但是 我的毕业答辩在6.24号,只能 ...

6月29也有一个安卓班的,我准备报6月14号的
作者: xgd6612    时间: 2015-5-18 15:48
仁兄 你是不是想简单了~~~   你的技术分还不够10 ~....博客都木有写吧,我本来是要报6.29的  但是我还有个同学~~~刚才在你另一个帖子里回复的 志行~~  我准备和他一起所以准备报7.11号     等都通过了  技术分25分才可以入学~
作者: 猪油炒鸡蛋    时间: 2015-5-18 20:34
xgd6612 发表于 2015-5-18 15:48
仁兄 你是不是想简单了~~~   你的技术分还不够10 ~....博客都木有写吧,我本来是要报6.29的  但是我还有个 ...

我先付费、、
作者: xgd6612    时间: 2015-5-19 09:05
猪油炒鸡蛋 发表于 2015-5-18 20:34
我先付费、、

好吧  土豪就是不一样~~
作者: 小悟空et    时间: 2015-5-19 09:34
我这运行你的代码,没有报错啊

没报错.jpg (103.41 KB, 下载次数: 40)

没报错.jpg





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