Android基礎之Java多態、繼承、重載和重寫的區別



一、繼承(inheritance)
1.1 繼承是什么
簡而言之,繼承就是在現有類的基礎上,增加新的方法或者重寫基類的方法的一種方式。
繼承還是面向對象語言的基本特征【繼承、多態和封裝】之一。

在Java中,java.lang.Object這個類是所有類的基類【也叫父類或者超類】。繼承涉及到的兩個關鍵字如下:

extends:      用于繼承類,每個類最多只能繼承一個父類
implements:   用于繼承接口,每個類繼承接口數量不做限制

該下面我們只是創建了一個Person類,且沒有明確指定繼承某個類,但是其基類默認為Object。

/**
  * 創建類: 人
  */
public class Person{
    //姓名
    public void name(){}

    //性別
    public void sex(){}
}

1.2 繼承怎么用

public class JavaPolymorphic {

/**
  * 創建一個接口
  */
public interface IPerson{
  //接口中的方法
  void work();
}

/**
  * 創建類: 男人,并繼承Person
  */
public class Man extends Person implements IPerson{
      /**
        * 重寫了父類Person的name()方法
        */
       @Override
       public void name() {
          super.name();
      }

      /**
        * 重寫了接口IPerson中的work()方法
        */
      @Override
      public void work() {}

      }
}

1、該上面類Man繼承了父類Person和接口IPerson,此時就可選擇性的重寫父類Person中的方法,但是接口IPerson中所定義的所有接口必須實現重寫。
2、如果類Man為抽象類(被abstract修飾),則繼承父類或接口時,可選擇不重寫、部分重寫或全部重寫父類中的方法和接口中定義的接口。

二、重載(overloading)
2.1 重載是什么
一句話概括:在同一類中,有著相同名稱,但形式參數不同的方法。
比如在上面類JavaPolymorphic中存在以下兩個方法:

/**
 * @param age   年齡
 * @param name  姓名
 */
public Man(int age, String name){}

/**
 * @param city  城市
 */
public Man(String city){}

三、重寫(overriding)
3.1 重寫是什么
剛在上面例子也多次提到了重寫,重寫就是子類繼承父類后,覆蓋父類中的某個方法的操作就是重寫的過程。

四、多態(Polymorphism)
4.1 多態是什么
繼承是多態的一種表現形式,一個類型(Person類型)可表現出來多種狀態(男人Man,并且具備年齡、姓名等不同屬性)
多態同樣也是面向對象語言的基本特征【繼承、多態和封裝】之一。
4.2 多態的好處
降低代碼耦合程度,更易于功能的擴展。



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,227評論 0 5
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,687評論 0 11
  • 一、繼承 當兩個事物之間存在一定的所屬關系,即就像孩子從父母那里得到遺傳基因一樣,當然,java要遺傳的更完美,這...
    玉圣閱讀 1,071評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 江南,是氤氳的一首婉約詞,是纏綿一闋朦朧詩,吟誦著遠古的韻律,譜寫著千古的傳奇。一簾杏花微雨的江南,誰執一柄花折傘...
    美文小屋閱讀 391評論 0 0