*在子类,父类默认构造函数及带参构造函数的调用:
如下程序,在父类,子类中均存在两种构造函数,一种是无参的构造函数,用于给一些属性提供默认值,一种是直接初始化某些属性;在子类进行继承时,子类构造函数对父类进行引用:
1.父类构造函数必须放在子类构造函数的第一行。
2.当父类中不存在构造函数时,系统会为父类自动生成一个无参的构造函数,且在子类构造函数的第一行默认调用。也可手动进行调用。
3.当父类存在无参的构造函数时,在子类中的调用情况与2中一致
4.当父类中存在带参的构造函数时,系统就不会再为其生成无参构造函数,因此子类的构造函数中必须手动调用带参的构造函数,否则系统会默认想要调用无参构造函数,结果不存在,报错。因此我们知道:父类中可以不存在无参构造函数,但是在子类构造函数中必须手动调用带参构造函数,否则报错。
5.当子类不显示调用父类哪个构造函数时,系统默认调用父类无参构造函数
6.如果主程序调用子类带参构造函数,而子类构造函数没有指定父类构造函数的调用,默认调用父类无参构造函数。
7.在主程序对子父类构造函数进行调用时,默认均调用无参构造函数,除非指定带参构造函数。
class SuperClass{
private int age;
private String name;
public SuperClass(){
age=0;
name="aa";
}
public SuperClass(int age,String name){
this.age=age;
this.name=name;
}
public void getAge(){
System.out.println("年龄为:"+age);
}
public void getName(){
System.out.println("姓名为:"+name);
}
}
class ThisClass extends SuperClass{
public ThisClass(){
//super();
super(18,"java");
}
}
public class ClassMain{
public static void main(String[] args){
ThisClass tc=new ThisClass();
tc.getAge();
tc.getName();
System.out.println("Over!");
}
}