thinking in Java faster—多態

前面我們大概講解了Java中的繼承,這裏有一個很重要的知識點,比如:

class Person {
    public void doJob() {
        System.out.println(“person do job”);
    }
class Student extends Person {}
class Worker extends Person {}

那麼,當基於student或者worker生成對象時,可以寫成

Person student = new Student()
Person worker = new Worker()

這裏涉及到一個知識點:向上轉型,即子類可以把類型向上轉爲父類。這個點很重要,也是Java如此靈活的一個原因,後邊涉及多態再詳細展開。

本節重點講一下多態

何爲多態,也可以稱爲後期綁定,也就是上邊的向上轉型,在Java的運行期(後期),父類引用(Person student)指向(=)子類對象(new Student())。
這個有什麼用處呢,用處大了。看下邊的代碼:

public class Factoryprivate Person person;
    public void setPerson(Person person){
        this.person = person;
    }
    public doSpecialJob(){
        person.doJob();
    }

工廠類通過組合的方式包含了Person類,然後有一個doSpecialJob方法,讓Person幹活(doJob方法),這裏由於向上轉型的存在,也就是後期綁定或者多態的存在,注意多態(後期綁定)是向上轉型的實現。工廠類中的Person可以傳入一個student對象也可以傳入一個worker對象,假如沒有多態,那起碼你要實現兩個Factory類,一個包含了Student類,一個包含了Worker類。
有了後期綁定,你就可以在某種層面上(Factory類中)只和基類(Person)打交道了。而不用去關注基類具體指向了哪個子類對象。
下面我們來總結一下多態的好處:
1、可擴展性,Factory類中不需要改變任何代碼,只需要傳入的Person類被不同的子類繼承即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章