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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 邱成 于 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();
    }

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
既然接受参数的是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: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);//这样就可以了
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马