黑马程序员技术交流社区
标题:
继承构造方法的问题...
[打印本页]
作者:
alexsoon
时间:
2014-7-2 20:28
标题:
继承构造方法的问题...
Android那边水太深了,问个问题连看的人都很少
class Parent
{
public Parent(int i) // 这个构造方法有个参数
{
System.out.println("Here is Parent");
}
}
public class Child extends Parent
{
public Child()
{
System.out.println("Here is Child");
}
public static void main(String[] args)
{
Child ch = new Child(); // 生成对象时没有参数
}
}
每个类不是都有一个默认的不带参数的构造方法吗?
生成子类对象时,可以寻找到那个默认的构造方法啊,为什么提示找不到呢?
作者:
sugar
时间:
2014-7-2 21:15
当一个类中没有定义构造函数,系统会默认给该类加入一个空参数的构造函数;
当在类中自定义了构造函数后,默认的构造函数就没哟了;
子类的所有的构造函数默认都会访问父类中空参数的构造函数,因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数的构造函数时,子类必须手动通过super()语句形式来指定要访问父类中的哪一个构造函数;
class Parent
{
public Parent(int i) // 这个构造方法有个参数
{
System.out.println("Here is Parent");
}
}
public class Child extends Parent
{
public Child()
{
super(1);
System.out.println("Here is Child");
}
public static void main(String[] args)
{
Child ch = new Child(); // 生成对象时没有参数
}
}
作者:
遗失的美好YXJ
时间:
2014-7-2 21:20
原因是Parent类中你自定义了一个有参数的构造函数,该类就不再定义默认的空构造函数了.
这个程序可以在Parent类中补一个空参数的构造函数就o了.
class Parent
{
public Parent(){}//补一个空参数的构造函数
public Parent(int i)
{
System.out.println("Here is Parent");
}
}
public class Child extends Parent
{
public Child()
{
System.out.println("Here is Child");
}
public static void main(String[] args)
{
Child ch = new Child();
}
}
作者:
alexsoon
时间:
2014-7-2 21:21
谢谢了。原来这样
作者:
lc2015
时间:
2014-7-2 23:16
楼上解释的很清楚
作者:
遗失的美好YXJ
时间:
2014-7-2 23:41
sugar 发表于 2014-7-2 21:15
当一个类中没有定义构造函数,系统会默认给该类加入一个空参数的构造函数;
当在类中自定义了构造函数后, ...
说的比我的好
作者:
刘亚东
时间:
2014-7-2 23:42
过来学习
作者:
引子
时间:
2014-7-6 08:52
父类中没有空的构造函数 继承时 子类的构造函数第一行默认调用父类构造函数 所以会报错
作者:
hm521824
时间:
2014-7-6 10:19
那是在你没有自定义构造函数时才会启用默认的。
作者:
奋斗的小耗子
时间:
2014-7-6 10:29
2楼解释的很对
作者:
DKID
时间:
2014-7-6 11:59
当一个类中没有定义构造函数,系统会默认给该类加入一个空参数的构造函数; 当在类中自定义了构造函数后,默认的构造函数就没了,如果需要的话必须手动加上一个无参构造函数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2