父类、子类:
public class Fu {
public Fu() {
System.out.println("父类的无参构造器....");
}
public Fu(int a) {
System.out.println("有参int型父类构造器....."); }
}
class Zi extends Fu{
public Zi() {
// super();/*调用子类会自动调用父类中的无参构造子*/
System.out.println("子类无参构造器....");
}
public Zi(int a) {
// super();/*调用子类会自动调用父类的无参构造子*/
System.out.println("子类int型子类构造器....");
}
}
测试类:
public class Test {
public static void main(String[] args) {
new Zi();
new Zi(10);
}
}
测试结果:
父类的无参构造器....
子类无参构造器....
父类的int型父类构造器....
子类int型子类构造器....
而如果在子类 Zi 中自己最先调用父类中的构造子,则会按照你写的构造子调用,例如:
对于调用子类无参构造子:
这是你的无参子类:
class Zi extends Fu{
public Zi() {
super();
System.out.println("子类无参构造器....");
}
}
这是测试类:
public class Test {
public static void main(String[] args) {
new Zi();
}
}
测试结果:
父类的无参构造器....
子类无参构造器....
再如:
无参子类:
class Zi extends Fu{
public Zi() {
super(10);
System.out.println("子类无参构造器....");
}
}
测试类:
public class Test {
public static void main(String[] args) {
new Zi();
}
}
测试结果:
有参int型父类构造器.....
子类无参构造器....
而不写则会默认调用父类中的无参构造子,以上是调用无参子类构造子,接下来看看调用子类有参构造子
对于调用有参子类有参构造子:
有参子类:
class Zi extends Fu{
public Zi(int a) {
super();/*写它跟不写其实一样,写下它是一种良好编程习惯*/
System.out.println("子类int型子类构造器....");
}
}
测试类:
public class Test {
public static void main(String[] args) {
new Zi(10);
}
}
测试结果:
父类的无参构造器....
子类int型子类构造器....
再如:
有参子类:
class Zi extends Fu{
public Zi(int a) {
super(10);
System.out.println("子类int型子类构造器....");
}
}
测试类:
public class Test {
public static void main(String[] args) {
new Zi(10);
}
}
测试结果:
有参int型父类构造器.....
子类int型子类构造器....