super关键字要点

来源:互联网 发布:java 读取文件内容 编辑:程序博客网 时间:2024/06/08 02:17

用于访问父类的成员:

super.成员变量

super.成员方法([参数1],[参数2]...)


使用supe关键字调用父类的构造方法:

super([参数1],[参数2]...)

注意:

在子类的构造方法中一定会调用父类的某个构造方法,这时可以在子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法(当父类定义了带参数的构造方法没有定义无参的构造方法时,父类是没有默认的无参的构造 方法的)。

子类在实例化时默认调用了父类无参的构造方法,所以在定义一个类时,如果没有特殊的需求,尽量在类中定义一个无参的构造方法,避免被继承时出现错误。

package study;
class Animal{

public Animal(String name) {
System.out.println("我是一只"+name);
}
}
class Dog extends Animal{

}
public class Example04 {
public static void main(String[] args) {
Dog dog=new Dog();
}
}

结果:




子类必然会调用父类的构造方法。
要不然是你显式调用,要不然是Java自动调用。

如果父类有不带参数的构造方法,或者父类没有任何构造方法(也就是说有缺省构造方法),那么子类可以不显式调用,子类会自动调用super();

如果父类有带参数的构造方法,却没有不带参数的构造方法,那么如果子类没有显式调用父类构造方法,那么编译会报错。



原创粉丝点击