在Java创建对象时Dog = new Dog();,此处并不是调用了Dog方法,而是调用Dog类的结构函数。
构造函数有两种类型:无参数构造函数和有参数构造函数,在实际编写中若我们本身没有编写任何的结构函数,则编译器会自动写出无参数的结构函数,但若我们写了有参数的构造函数,则编译器便不会自动加载无参数构造函数,则在创建对象时,便不能调用无参数的结构函数。
下面讲解一下关于继承中,父类和子类构造函数的调用情况:
子类继承了父类的实例变量和方法,在创建子类的对象时,首先会调用父类的结构函数,调用父类结构函数主要是利用super()这个函数,在父类有无参结构函数时,则可以自己写super(),也可以不写,而是由编译器自己调用,但若父类中没有的话,子类进行调用时必须自己写super(string s)。
这里写代码片public class FatherClass {
public FatherClass(int age){
System.out.println(age);
}
}
public class SonClass extends FatherClass {
public SonClass() {
// TODO Auto-generated constructor stub
}
public SonClass(int c) {
super(22);
System.out.println(1234);
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
FatherClass f = new FatherClass(28);
SonClass s = new SonClass(66);
}
}
此外要注意,super函数一定是在结构函数的首位。