11 个解决方案
#1
#2
#3
不能隐式的继承,这就和底层有关系了吧
#4
子类继承父类的字段和方法。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
#5
构造方法是什么时候调用的?是在实例化的时候调用的,而子类既然继承了父类,那就具备了父类所有的属性以及方法,当子类实例化的时候就先调用父类的构造了。。。所以,lz你的问题这下就有答案了吧~
#6
子类是从父类继承来的,那么你想用子类创建对象的时候 肯定要先建立父类的对象 就好比 要先有你爸爸 然后才能有你这个道理。
我也是刚刚初学J2SE这个问题我也问过我自己。
我也是刚刚初学J2SE这个问题我也问过我自己。
#7
子类是通过父类继承过来的,所以子类有父类的属性和方法,如果不调用父类的构造方法,那么怎么初始化父类中定义的属性,即怎么给父类的属性分配内存空间 ,如果父类的属性没有分配内存空间,那么子类访问父类的属性,不就会报错 ?
#8
对。楼上说的有理
#9
打个比喻吧。可能不是太恰当。
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
Class A{
public A(){
System.out.println("A");
}
}
Class B extends A{
public B(){
System.out.println("B");
}
}
Class C extends B{
public C(){
System.out.println("C");
}
public static void main(String[] args) {
C c=new C();
}
}
//运行class C 会打印 A B C 。证明依次调用了 A B C的构造方法
#10
你要继承父类的方法,必须保证父类被初始化才行,那父类怎样初始化呢?调用构造方法,
换句话,首先得保证有祖宗,才能保证有后代
换句话,首先得保证有祖宗,才能保证有后代
#11
不调就不能初始化父类。。
#1
#2
#3
不能隐式的继承,这就和底层有关系了吧
#4
子类继承父类的字段和方法。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
#5
构造方法是什么时候调用的?是在实例化的时候调用的,而子类既然继承了父类,那就具备了父类所有的属性以及方法,当子类实例化的时候就先调用父类的构造了。。。所以,lz你的问题这下就有答案了吧~
#6
子类是从父类继承来的,那么你想用子类创建对象的时候 肯定要先建立父类的对象 就好比 要先有你爸爸 然后才能有你这个道理。
我也是刚刚初学J2SE这个问题我也问过我自己。
我也是刚刚初学J2SE这个问题我也问过我自己。
#7
子类是通过父类继承过来的,所以子类有父类的属性和方法,如果不调用父类的构造方法,那么怎么初始化父类中定义的属性,即怎么给父类的属性分配内存空间 ,如果父类的属性没有分配内存空间,那么子类访问父类的属性,不就会报错 ?
#8
对。楼上说的有理
#9
打个比喻吧。可能不是太恰当。
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
Class A{
public A(){
System.out.println("A");
}
}
Class B extends A{
public B(){
System.out.println("B");
}
}
Class C extends B{
public C(){
System.out.println("C");
}
public static void main(String[] args) {
C c=new C();
}
}
//运行class C 会打印 A B C 。证明依次调用了 A B C的构造方法
#10
你要继承父类的方法,必须保证父类被初始化才行,那父类怎样初始化呢?调用构造方法,
换句话,首先得保证有祖宗,才能保证有后代
换句话,首先得保证有祖宗,才能保证有后代
#11
不调就不能初始化父类。。