黑马程序员技术交流社区

标题: 请教一个java定义内部类的问题,求解答! [打印本页]

作者: 石伟    时间: 2013-3-11 15:22
标题: 请教一个java定义内部类的问题,求解答!
Outer.Inner in = new Outer(new Inner()),这句话什么意思啊?在版主问的问题里面看到的,又实在想不出来答案

我只知道可以这样定义:
Outer out = new Outer();
Outer.Inner in =out.new Inner();
或者等价于:
Outer.Inner in = new Outer().new Inner();

上面那种写法我真没见过,求解释!
作者: 高贵杰    时间: 2013-3-11 15:50
我也看到这个问题了,在网上没有查到这种写法,而且在myeclipse里面,这句话的定义有问题。等待版主的答案
作者: 邹学良    时间: 2013-3-11 15:50
本帖最后由 邹学良 于 2013-3-11 15:54 编辑

Outer.Inner in = new Outer(new Inner())两边的都类型不一样,而且它们没有什么继承关系,不能这么写吧?
Outer.Inner是Inner类型,new Outer(new Inner())返回的是Outer类型
而new Outer(new Inner())中new Inner()作为一个参数传递给Outer构造方法 ,但是 Inner作为一个内部类,这样的话也传递不了啊?!
作者: scott0610    时间: 2013-3-11 16:00
Outer.Inner in = new Outer(new Inner());
这样编写应该是有误的。定义的类型都不一致,不能通过编译。
Outer.Inner:表示内部类对象。
new Outer(new Inner());表示Outer对象的构造函数需要一个Inner对象的参数。但无论怎么样,构造函数返回值都是Outer对象。
所有该句代码有误,不能通过编译。
作者: 张宁    时间: 2013-3-11 16:31
class souter {
           int a ;
        class inner{
          int b = 100;
               int funb(){
                       int result  = a + b ;
                       return result;
               }
                   }
}
public  class Outer{
         public static void main(String[] args) {
                 souter out = new souter();
                souter.inner in =out.new inner();
                souter.inner in = new souter(new inner());//我编写了一下,左边是一个inner类,右边是一个带参数的outer类,
                       //我不知道这句话是怎么用的,初步判断,不存在这种可能,他是错的。
                       int s= in.funb();
                       System.out.println(s);
        }
}

作者: 董维明    时间: 2013-4-2 21:22
张宁 发表于 2013-3-11 16:31
class souter {
           int a ;
        class inner{

你这代码 挺坑的,,为什么只有public 类名 是规范写法,会误人子弟




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