黑马程序员技术交流社区
标题:
匿名内部类
[打印本页]
作者:
李文肖
时间:
2011-10-8 11:13
标题:
匿名内部类
例如,在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。
大家帮忙下啊~!!
作者:
林国锋
时间:
2011-10-8 11:31
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是在哪里传入的了
};
}
}
作者:
张雷
时间:
2011-10-8 11:39
在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
答:会调用,调用的是Contents的无参构造方法
在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。。
答:在构造器中使用,此时你的基类应该有一个带参数的构造器
作者:
张雷
时间:
2011-10-8 11:39
在构造子类对象之前需要构造父类对象,返回的对象还是子类对象,所以会调用父类的构造函数
而传递的参数只是在父类的构造函数中赋值给子类继承的属性的值
Java code
public Test1(int a)
{
this.a = a;//给子类继承的属性a赋值
}
new Test1(1)//调用父类的带参数构造函数
{
};
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2