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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李文肖 黑马帝   /  2011-10-8 11:13  /  1983 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

例如,在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。
大家帮忙下啊~!!

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

3 个回复

倒序浏览
public class Test{
    public static void main(String[] args)
    {
        Contents con = getContents(12);
    }
    public static Contents getContents(int i)
    {
        return new Contents(i){
            System.out.println(i); //你在这里测试一下就可以知道是不是i是在哪里传入的了
        };
    }
}
回复 使用道具 举报
在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
答:会调用,调用的是Contents的无参构造方法

在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。。
答:在构造器中使用,此时你的基类应该有一个带参数的构造器

评分

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

查看全部评分

回复 使用道具 举报
在构造子类对象之前需要构造父类对象,返回的对象还是子类对象,所以会调用父类的构造函数
而传递的参数只是在父类的构造函数中赋值给子类继承的属性的值
Java code
public Test1(int a)
{
     this.a = a;//给子类继承的属性a赋值
}


new Test1(1)//调用父类的带参数构造函数
{
            
};
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马