有参数的父类构造函数
如果父类的构造函数有参数该怎么办?你能够传值进去吗?如果不行的话,则没有无参数构造函数的类将不能被继承。想象这个情景:所有的动物都有名字。所以Animal这个类有个getName()可以返回name实例变量的值。此实例变量是被标记为私有的,但Hippo这个子类有把getName()继承下来。这时候问题来了:
Hippo有getName()这个方法但是没有name实例变量。Hippo要靠Animal的部分来维持name实例变置,然后从getName()来返回这个值,但Animal要如何取得这个值呢?唯一的机会是通过super()来引用父类,所以要从这里把name的值传进去,让Animal把它存到私有的name实例变量中。
public abstract class Animal { private String name; public String getName() { return name; } public Animal(String theName) { //有参数的构造函数 name = theName; } } public class Hippo extends Animal { public Hippo(String name) { //这个也要跟父类一样有同类型的参数 super(name); //这个name会传值给父类的构造函数 } }