继承(Inheritance)
学习完了 Java 封装和形象两个个性,咱们再来看继承个性。如果你相熟的是相似 Java、C++这样的面向对象的编程语言,那你对继承这一个性,应该不生疏了。继承是用来示意类之间的 is-a 关系,比方猫是一种哺乳动物。
从继承关系上来讲,继承能够分为两种模式,单继承和多继承。单继承示意一个子类只继承一个父类,多继承示意一个子类能够继承多个父类,比方猫既是哺乳动物,又是爬行动物。
为了实现继承这个个性,编程语言须要提供非凡的语法机制来反对,比方 Java 应用 extends 关键字来实现继承,C++ 应用冒号(class B : public A),Python 应用 paraentheses (),Ruby 应用 <。
不过,有些编程语言只反对单继承,不反对多重继承,比方 Java、PHP、C#、Ruby 等,而有些编程语言既反对单重继承,也反对多重继承,比方 C++、Python、Perl 等。
public class Animal {
private String name;
private int id;
public Animal(String myName, String myid) {// 初始化属性值}
public void eat() { // 吃货色办法的具体实现}
public void sleep() { // 睡觉办法的具体实现}
}
// 企鹅类继承动物父类
public class Penguin extends Animal{public Penguin(String myName, int myid) {super(myName, myid);
}
}
// 老鼠类继承动物父类
public class Mouse extends Animal {public Mouse(String myName, int myid) {super(myName, myid);
}
}
继承的意义
继承最大的一个益处就是代码复用。如果两个类有一些雷同的属性和办法,咱们就能够将这些雷同的局部,抽取到父类中,让两个子类继承父类。这样,两个子类就能够重用父类中的代码,防止代码反复写多遍。不过,这一点也并不是继承所独有的,咱们也能够通过其余形式来解决这个代码复用的问题,比方利用组合关系而不是继承关系。
如果咱们再回升一个思维层面,去思考继承这一个性,能够这么了解:咱们代码中有一个猫类,有一个哺乳动物类。猫属于哺乳动物,从人类认知的角度上来说,是一种 is-a 关系。咱们通过继承来关联两个类,反馈真实世界中的这种关系,十分合乎人类的认知,而且,从设计的角度来说,也有一种构造美感。
继承的概念很好了解,也很容易应用。不过,适度应用继承,继承档次过深过简单,就会导致代码可读性、可维护性变差。为了理解一个类的性能,咱们不仅须要查看这个类的代码,还须要依照继承关系一层一层地往上查看“父类、父类的父类……”的代码。还有,子类和父类高度耦合,批改父类的代码,会间接影响到子类。
所以,继承这个个性也是一个十分有争议的个性。很多人感觉继承是一种反模式。咱们应该尽量少用,甚至不必。
更多 java 原创浏览:https://javawu.com