乐趣区

关于java:深入理解Java的继承特性

继承(Inheritance)

学习完了 Java 封装和形象两个个性,咱们再来看继承个性。如果你相熟的是相似 JavaC++这样的面向对象的编程语言,那你对继承这一个性,应该不生疏了。继承是用来示意类之间的 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

退出移动版