驗專案那天**問我,物件導向三大特徵都有什麼呀?「封裝、繼承、多型」。那分別講一講這三大特徵吧!我:「enmmmmm……」
確實是這樣,要我真的說出來的話,我說不出來,我不能夠很好地描述出來,於是我準備在學習一遍。
封裝是指將物件的資訊進行隱藏,使它的使用者無法看到,而只是提供乙個訪問介面。在類中,通過不同的修飾符能讓類的成員實現公開或隱藏。通過這些修飾符,類實現了很好的封裝。封裝的主要用途是防止資料收到意外破壞。**如下:
class test
public void rd(int value)
}class program
}
以上**中,使test類中的私有欄位被訪問,但又很好地保護了它的資料不被破壞。
當然,封裝的內容遠不止這些,但是思想是一致的。我們應該注意思想的學習,這樣才能很好得應用封裝操作。
繼承是指乙個類a能利用另乙個類b的資源(包括屬性和方法等),其中類a被稱為基類(或父類),而類b被稱為派生類(或子類)。繼承的用法如下:
class classa
}class classb : a
}
如果類b繼承於類a,那麼類b能否訪問類a中的全部成員呢?答案是否定的。這也是以下要說明的有關派生類在基類中的訪問許可權問題。
大多數而非所有的類都可以作為基類被繼承,如帶有sealed修飾符的密封類。
基類中只有兩種成員能夠被派生類訪問,包括public和protected型別的成員。其中protected型別是專為派生類設計的,該型別的成員只能在派生類中進行訪問。
在派生類中可以修改基類中的以下成員,包括虛擬成員(virtual)和抽象成員(abstract)。其中對虛擬成員的修改是在派生類中重寫該成員的執行**;而對於抽象成員而言,它在基類中沒有執行**,需要在派生類中進行新增。
下面通過乙個簡單的例子進行說明,**如下:
class classf
set }}
//虛擬方法
public virtual double income(double time)
在基類f中,定義了乙個公有字段、乙個公有屬性和乙個虛擬方法。以下是派生類classs的**。
class classs:classf
}
客戶端**
static void main(string args)
在派生類classs中,呼叫了classf類中的公有欄位name、公有屬性age,並重寫了虛擬方法income()。需要注意的是,重寫虛擬方法需要用到override關鍵字。執行程式,結果如下。
姓名:
張三工時:
30工資:
6000
多型是物件導向的又乙個重要特徵,它主要是指同一操作(如方法)作用於不同的類的例項,將產生不同的結果。多型主要是通過在派生類中對基類中的成員進行替換或重定義完成。
下面通過栗子進行說明,**如下:
//基類
class classf1
}//派生類1
class classs1:classf1
}class classs2:classf1
}//輸出結果
static void main(string args)
console.readkey();
}
以上**演示了多型性的實現過程,通過在兩個派生類中重寫基類中的虛擬方實現。
執行結果
呼叫了基類中的方法!
呼叫了派生類1中的方法!
呼叫了派生類2中的方法!
如果要在派生類中隱藏基類中的非虛成員,可以使用new關鍵字。
多型的主要作用是提高**的重用性和簡化程式結構。
物件導向三大特徵
1.繼承 什麼是繼承 繼承是一種建立新類的方式,在python中,新建的類可以繼承乙個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類 python中類的繼承分為 單繼承和多繼承 class parentclass1 定義父類 pass class parentclass2 定義父類 p...
物件導向三大特徵
是指將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問而是通過類提供的方法實現類內資訊的操作和訪問。可以通過j a中的訪問控制符來實現。實現復用。j a中,通過extends實現繼承 每個類只有乙個直接父類 j a.lang.object是所有類的直接 間接父類 子類獲得父類的全部屬性和方法 除...
物件導向的三大特徵
封裝 物件的資訊和內部的邏輯結構隱藏起來private 只能當前類的內部 被訪問default 包訪問許可權 protected 包一下類,其他類都可以訪問 public 所有類訪問 為每個屬性建立一對賦值和取值 繼承 在現有類的基礎上派生出新的類,新類將共享現有類的屬性和行為特徵,並且還可以在派生...