我看到这样的描述----
Java不会为子类创建不带参数的缺省构造函数,所以当不是从Object继承的子类
是不会有默认构造函数的
这句话中的Object是否指的是java.lang包中的类Object?另外,
这句话的意思是否是:假使A从Object中继承,B继承A,那A中会有默认的构造函数(如果自己未定义的话),而B中则不存在默认的构造函数.而一个类必须有构造函数的存在
也就是说,此时,必须在B中自己写一个构造函数?请指教
Java不会为子类创建不带参数的缺省构造函数,所以当不是从Object继承的子类
是不会有默认构造函数的
这句话中的Object是否指的是java.lang包中的类Object?另外,
这句话的意思是否是:假使A从Object中继承,B继承A,那A中会有默认的构造函数(如果自己未定义的话),而B中则不存在默认的构造函数.而一个类必须有构造函数的存在
也就是说,此时,必须在B中自己写一个构造函数?请指教
所有的类都是继承自Object的阿.
所以所有的类都会有默认构造函数
所以所有的类都会有默认构造函数
这里的意思是说如果继承的时候
构造函数是不会被继承的.
当你用new的时候,就调用的构造函数~~~
没有构造函数怎么创建对象?????
是不会有默认构造函数的//这句话本来就有问题 java有可能有不从object继承的子类吗?不可能!应该说不直接继承object类,也就是说:假使A从Object中继承,B继承A,如果a中没有无参构造函数,也就是说a写了个有参的构造函数,则b就必须写一个有参的构造函数,不能不写了,因为java在实例的时候的递归调用父类的构造函数的,一旦b中没写,则会调用父类的默认构造函数.所以就会报错了.
所以所有的类都会有默认构造函数
当类中定义了自己的构造函数后,默认构造函数就不能再用同时,B中不是一定要自己写一个构造函数
public class b extends a {}
这样a,b都有默认的无参数构造函数
a a1 = new a();
b b1 = new b();
是正确的
如果你重载了a的构造函数如:
public class a
{
a(int i)
{
}
}
那么b也必须覆盖父类a的构造函数
public class b extends a
{ public b(int i) {
super(i);
}
}
那么此时a,b的构造函数只能是 a a1 = new a(0);b b1 = new b(0);
如果想要不带参数的构造函数就要写成下面
public class a
{
a()
{
}
a(int i)
{
}
}
public class b extends a
{
b()
{
super();
} public b(int i) {
super(i);
}
}