1. 程式人生 > >理解類與類之間的關係小結

理解類與類之間的關係小結

    首先說明這是自己的一些理解,如果有不對的地方,希望大家指正。(水平有限)

組合

    首先要說明的是,組合要符合has-a的關係,所謂has-a,舉個例子吧,就像汽車類引擎類,引擎對於汽車來說肯定是必不可少的,這便是has-a的關係。在程式碼中我們來看,首先我們新建一個汽車類然後還有一個引擎類。

    class Engine{

        void launch(){system.out.println("引擎發動")}

}

    class Car{

    Engine e;

}

這時候Car類中存在以Engine類宣告的成員變數,而這便是組合,如果不明白我們對比下面的繼承來看看。

繼承

     繼承,顧名思義,就是子類繼承父類,而繼承滿足的則是is-a的關係,我們再舉個例子,就像狗狗類和寵物類,狗狗肯定是寵物(這裡大家不要鑽牛角尖,嘿嘿),這裡我們新建一下相關的類。

             class Pet{

                  protected String name;

                  protected int age;

                  public void eat(){}

}

               class Dog extends Pet{

}

    通過上面的程式我們可以看出狗狗類繼承了寵物類,他可以適用父類的屬性和方法。這便是繼承。當我們先理解了組合和繼承之後,我們這時候就要思考一下了,我們對於繼承和組合的選擇問題,當然也是is- a和has-a的關係的正確辨識。這裡大家可以看一下這篇文章,對比一下這兩者的關係。

組合和繼承的關係

依賴

        依賴,字面意思就是離不開,有關係。我們再舉個例子,通過例子來了解這些關係。首先我就說平時開車吧,開車肯定要先有一部車,我們看一小段程式碼

            class Car{

}

            class person{

                void drive(Car c){}

}

    通過這個關係我們就能看出開車這個過程中,車和人是依賴關係。

聚合

    首先我先大概說一下什麼是聚合,首先一個學生,他有自己的住址,我們再給他加一個名字,當然名字和他是屬於has-a的關係,但是地址的話肯定可以住很多學生。

    class IdNum{

}

    class Student{

        IdNum id;

        Address address;

}

    class Address{

}

通過上面的程式碼我們可以發現一個學生有自己的身份證號,這時候是組合關係,但是一個學生有一個住址,這時候便是聚合關係了。

關聯在這裡就不多說了,就像上面的人開車,這兩個類都是相關聯的。

 另:只有正確瞭解了類與類之間的關係,我們才能學出好的程式碼,不是嗎?還有就是格式欠佳,慢慢改正。