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



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

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

extends:      用於繼承類,每一個類最多隻能繼承一個父類
implements:   用於繼承接口,每一個類繼承接口數量不作限制

該下面咱們只是建立了一個Person類,且沒有明確指定繼承某個類,可是其基類默認爲Object。.net

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

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

1.2 繼承怎麼用code

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() {}

      }
}

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

2、重載(overloading)
2.1 重載是什麼
一句話歸納:在同一類中,有着相同名稱,但形式參數不一樣的方法。
好比在上面類JavaPolymorphic中存在如下兩個方法:blog

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

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

3、重寫(overriding)
3.1 重寫是什麼
剛在上面例子也屢次提到了重寫,重寫就是子類繼承父類後,覆蓋父類中的某個方法的操做就是重寫的過程。繼承

4、多態(Polymorphism)
4.1 多態是什麼
繼承是多態的一種表現形式,一個類型(Person類型)可表現出來多種狀態(男人Man,而且具有年齡、姓名等不一樣屬性)
多態一樣也是面嚮對象語言的基本特徵【繼承、多態和封裝】之一。
4.2 多態的好處
下降代碼耦合程度,更易於功能的擴展。接口


相關文章
相關標籤/搜索