Java教程 目录

Java继承

Java中的继承是一种机制,表示为一个对象获取父对象的所有属性和行为。

在Java中继承是:可以创建基于现有类构建新的类。 当您从现有类继承时,就可以重复使用父类的方法和字段,也可以在继承的新类中添加新的方法和字段。

继承表示IS-A关系,也称为父子关系。

为什么在java中使用继承?

对于方法覆盖(因此可以实现运行时的多态性),提高代码可重用性。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写(覆盖)。

Java继承的语法

----- ------------- ------- ---------------  
-  
   --------- --- ------  
-

extends关键字表示正在从现有类派生创建的新类。 “extends”的含义是增加功能。在Java的术语中,继承的类称为父类或超类,新类称为子或子类。

Java继承示例

如上图所示,Programmer是子类,Employee是超类。 两个类之间的关系是Programmer IS-A Employee. 它表示 Programmer 是一种 Employee 的类型。

参考下面示例代码的实现 -

----- -------- -
    ----- ------ - ------
-

----- ---------- ------- -------- -
    --- ----- - ------

    ------ ------ ---- ----------- ------- -
        ---------- - - --- -------------
        ------------------------------ ------ ---- - ----------
        ------------------------- -- ---------- ---- - ---------
    -
-

执行上面代码得到以下结果 -

---------- ------ ----------
----- -- ---------- --------

在上面的例子中,Programmer对象可以访问自身类以及Employee类的字段,即提高了代码可重用性。

java继承类型

在类的基础上,在java中可以有三种类型的继承:单一,多级和分层。在Java编程中,仅能通过接口支持多重和混合继承。稍后章节中我们将了解学习接口的应用。

注意:在java中的类不支持多继承。

当一个类扩展多个类,即被称为多重继承。 例如:

(1). 单一继承示例

文件 TestInheritance.java 中的代码如下 -

----- ------ -
    ---- ----- -
        --------------------------------
    -
-

----- --- ------- ------ -
    ---- ------ -
        ---------------------------------
    -
-

----- --------------- -
    ------ ------ ---- ----------- ------- -
        --- - - --- ------
        ---------
        --------
    -
-

执行上面代码得到以下结果 -

----------
---------

(2). 多级继承示例

文件 TestInheritance2.java 中的代码如下 -

----- ------ -
    ---- ----- -
        --------------------------------
    -
-

----- --- ------- ------ -
    ---- ------ -
        ---------------------------------
    -
-

----- ------- ------- --- -
    ---- ------ -
        ---------------------------------
    -
-

----- ---------------- -
    ------ ------ ---- ----------- ------- -
        ------- - - --- ----------
        ---------
        ---------
        --------
    -
-

执行上面代码得到以下结果 -

----------
----------
---------

(3). 多级继承示例

文件 TestInheritance3.java 中的代码如下 -

----- ------ -
    ---- ----- -
        --------------------------------
    -
-

----- --- ------- ------ -
    ---- ------ -
        ---------------------------------
    -
-

----- --- ------- ------ -
    ---- ------ -
        ---------------------------------
    -
-

----- ---------------- -
    ------ ------ ---- ----------- ------- -
        --- - - --- ------
        ---------
        --------
        -- --------------------
    -
-

执行上面代码得到以下结果 -

----------
---------

问题:为什么在Java中不支持多重继承?

为了降低复杂性并简化语言,Java中不支持多重继承。想象一个:ABC是三个类。 C类继承AB类。 如果AB类有相同的方法,并且从子类对象调用它,AB类的调用方法会有歧义。

因为编译时错误比运行时错误好,如果继承2个类,java会在编译时报告错误。 所以无论子类中是否有相同的方法,都会有报告编译时错误。例如下面的代码是编译出错的。

----- - -
    ---- ----- -
        ----------------------------
    -
-

----- - -
    ---- ----- -
        ------------------------------
    -
-

----- - ------- ---
---------- -- -- ----  

 ------ ------

    ---- ----------- ------- -
        - --- - --- ----
        ------------ --- ----- ----- ------ ----- -- --------
    -
-

上一篇:Java组合
下一篇:Java组合与继承