黑马程序员技术交流社区

标题: 帮忙解释一下匿名对象和类作为形参的问题 [打印本页]

作者: 邱成    时间: 2012-9-5 23:42
标题: 帮忙解释一下匿名对象和类作为形参的问题
本帖最后由 邱成 于 2012-9-6 07:15 编辑

比如我有三个类
class classA{
int age;
}
class classB extends classA{
String name;
public void getinfo(classB b){
    System.out.println(name+age);
    }
}
_____________
class C{
    public static void main(String args[]){
    classB d=new classB;
    b.getinfo(12,"jack");---这样就不行,用类作为参数传入到底怎么调用呢?
    }
}

————————————————————
另外再问一下如果我用匿名对象调用classB的方法为什么返回的是NULL,比如我下面这么写,匿名对象到底该怎么用?
class classA{
int age;
}
class classB extends classA{
String name;
public void getinfo(){
    System.out.println(name+age);
    }
}
class C{
    public static void main(String args[]){
    new Classb().name="JACK";
    new Classb().age=12;
    new Classb().getinfo();
    }
作者: 王陶成    时间: 2012-9-6 00:08
既然接受参数的是classB b,你传入的参数就得是classB类的对象或者它的子类对象,就像下面代码改的。
class classA{
        int age;
        }
        class classB extends classA{
        String name;
        public void getinfo(classB b){
            System.out.println(name+age);
            }
        }

        class C{
            public static void main(String args[]){
            classB b=new classB();
            b.getinfo(new classB());
            }
        }
但结果是null0,因为classB的特有属性name和继承classA类的age属性都没有赋值,使用默认值null和0

第二个问题
匿名对象,它只在堆内存中开辟了空间,但是当运行到new Classb().getinfo();这一句,前面的new Classb().name="JACK"; new Classb().age=12;  在内存中就成了垃圾,就算给它赋了值,赋值跟没赋值差不多,到后面也不会调用到。所以说匿名对象调用属性没意义,调用方法有意义,所以你的结果会是null0,。拿匿名对象调用方法挺方便,如果一个类里面有一个方法,要调用,可以拿匿名对象调用


作者: 武庆东    时间: 2012-9-6 00:17
本帖最后由 武庆东 于 2012-9-6 00:20 编辑

class classA{
int age;
}
class classB extends classA{
String name;
public void getinfo(classB b){
    System.out.println(name+age);
    }
}
_____________
class C{
    public static void main(String args[]){
    classB d=new classB;
    d.age=12;
    d.name="jack";
    d.getinfo(d);//这样就可以了
    }
}





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