【Java】瘋狂Java基礎(一)——物件導向的特徵:繼承、封裝和多型

AresCarry發表於2018-03-28

一、前言

      小編記得,剛接觸計算機相關的課程的時候,接觸的是c++,c++的老師一上來就說c++是物件導向的,c語言是程式導向的。物件導向比程式導向厲害,是從程式導向發展過來的的。

      當時有一個發小學的c語言,我就說,我學的比你的厲害。。O(∩_∩)O哈哈~

      到現在才慢慢的理解了什麼是物件導向。這篇部落格就針對我們們的這些概念結合生活,再結合程式碼把物件導向的特徵體現出來。

二、物件導向的特徵

      很多人都知道,物件導向的特徵有封裝、繼承、多型。

      先來一波理論:來自《瘋狂java講義》

Java是物件導向的程式設計語言,提供了private、protected和public三個訪問控制修飾符來實現良好的封裝,提供了extends關鍵字來讓子類繼承父類,子類繼承父類就可以繼承到父類的成員變數和方法,如果訪問控制允許,子類例項可以直接呼叫父類裡面的方法。

      其實在我們學習的過程中,也慢慢接觸了java的物件導向。

三、封裝

      一句話說說:

把一類物件,相似的屬性彙總到一起,組成一類,這個類把該隱藏的隱藏,該暴露的暴露。

      java提供了三個訪問控制符:private、protected和public,分別代表了三個訪問控制級別,另外有一個不加任何訪問控制符的訪問控制級別,由小到大:

這裡寫圖片描述

訪問控制符 說明
private 被修飾後,這個成員只能被當前類內部訪問
default 包訪問許可權,被修飾的成員或者外部類可以被相同包下的其他類訪問
protected 子類訪問許可權,被修飾成員可以被同一個包中其他類訪問,也可以被不同包中的子類訪問
public 公交車,被修飾的成員可以被所有類訪問

      程式碼很常見,簡單一個類:

public class A{
    ....
}

四、繼承

      一句話說說:

涉及到父子關係,自類可以得到父類的特徵,相對是父類的擴充,達到程式碼重用的效果

      Java中用extends關鍵字,實現繼承類被稱為子類,被繼承類被稱為父類。例如,水果和蘋果的關係,蘋果繼承了水果,蘋果是水果的子類,水果是蘋果的父類。

五、多型

      一句話說說:

多種形態,多種實現形式

      在程式碼中就是一個方法名字,多種實現形式。過載(overload)和重寫(override)是多型的兩種主要形式。

  • 過載(Overload)java程式碼中,一個類可以有多個方法名相同、引數不同的方法。

  • 重寫(override)java程式碼中,子類繼承父類,可以重寫父類的方法

      過載demo:

public class A{

    public void test(){
        ....
    }

    public Integer test(){
        .....
    }

    public void test(Integer a){
        .....
    }

}

      這裡小編可以說說過載的機制:動態聯編。當有方法呼叫A類的test方法的時候,處理器會根據test方法的引數型別、返回值型別自動判斷出要呼叫那個方法。所以java還是為我們鋪墊好了很多呢~!

      重寫(override)demo:

public class A{
    public test(){
        ....
    }
}

public class B extends A{
    public test(){
        ******
    }
}

      在上面的程式碼中,很容易看出使用了繼承的關係,在繼承中,B類繼承了A類,B是A的子類。同時B類可以訪問A類的所有非private的方法。B類中也定義了一個和A類一樣的方法test,這個就是對A類的方法重寫。

六、小結

      可以說物件導向的三大特徵都是會被問到的在面試中,我們還是要深刻的理解一下,最好是理論結合程式碼來解釋,空範範的理論會讓人感覺有點是剛從學校出來的樣子。所以要多結合程式碼解釋。

相關文章