Java继承

Java的继承

继承是Java面向对象的核心之一,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
在生活中也存在继承关系,比如如下图所示,食草动物和食肉动物都是动物,它们都有动物的一些属性特征,也有一些自己的属性特征。所以继承需要符合的关系是:父类更通用,子类更具体,所以子类会具有父类的一般特性也会具有自身的特性。Java继承
为了更加了解继承接下来我们来看两个例子如下图所示:
Java继承
Java继承
这里的两个类我们可以看出它们有很多相同的属性和方法,但也有不同的属性,这样有大量的重复,所以这就衍生了Java中的继承机制。Java继承的关键字为extends,子类除了父类的构造方法之外所有成员都可以继承,但是private修饰的成员,必须通过间接(其他public、protected修饰的方法)方式访问。代码演示如下:

Java继承
Student类继承了Person类中的所有成员变量和方法,从上述代码可见继承使用的关键字是extends,extends后面的Person是父类。

如果在类的声明中没有使用extends关键字指明其父类,则默认父类为Object类,java.lang.Object类是Java的根类,所有Java类包括数组都直接或间接继承了Object类,在Object类中定义了一些有关面向对象机制的基本方法,如equals()、toString()和finalize()等方法。一般情况下一个子类只继承一个父类,多重继承可以通过接口实现。

在代码第十行用了super关键字,super指代父类对象,在子类中可以访问父类中的成员,在子类中的构造方法中会默认super() 调用父类的无参数构造方法(默认只会调用无参数的构造方法);如果有显示调用父类的构造方法,那么默认调用就不存在了;所以,一般设计类都要提供一个无参构造,扩展性强。要注意的是super(…)和this(…) 不能共存