物件導向OOP的三個基本特徵

2021-07-23 06:19:42 字數 1855 閱讀 8108

摘要總結:

封裝:封裝就是要把屬於同一類事物的共性(包括屬性與行為)歸到乙個類中

繼承:有些事物有共性,但還存在區別

多型:對這件抽象的事, 對於每個個體(具體)又能找到其自身的行為去執行

封裝:首先,屬性可用來描述同一類事物的特徵, 行為可描述一類事物可做的操作,封裝就是要把屬於同一類事物的共性(包括屬性與行為)歸到乙個類中,以方便使用.比如人這個東東,可用下面的方式封裝:

人繼承:

由於封裝,使得有共同特徵的一類事物的所有描述資訊都被歸於一類之中,但我們知道,這並不是萬能的,

有些事物有共性,但還存在區別

,比如教師,簡單封裝起來如下:

教師上面對"教師"的封裝,與對"人"的封裝基本上差不多,只是多了乙個特徵行為:教書,

教師有與人一樣的共性, 但我們不能說"人教書",也就是不能把教書封裝到"人"之中去,教書是教師的特徵行為之一. 為了省事地封裝教師(**的復用,這只是繼承存在的原因之一), 可以讓教師去繼承人,如:

教師 extends 人

這樣,我們就不用重新定義那些已經被"人"這乙個類所封裝的那些屬性與行為了,而只需要使用繼承的方式,在人的基礎上拓展教師專有的行為,即"教書"即可把教師描述出來;這樣的結果, 即是教師也同時擁有"人"之中所封裝的一切屬性與行為, 還擁有自己的特徵行為"教書".

多型:多型的概念發展出來,是以封裝和繼承為基礎的(其實我覺得抽象也應該算是物件導向的大特徵之一,要封裝,抽象是必須的)

簡單的理解一下多型,比如:

人這個類,封裝了很多人類共有的特性,

教師是人的子類,繼承了人的屬性與行為,當然教師有自己的特徵行為,比如教書授課;

學生是人的子類,繼承了人的屬性與行為,當然學生有自己的特徵行為,比如學習做作業;

現在,當我們需要去描述教師與學生各自的行為的時候, 我們可以分開來說"教師在授課", "學生做作業", 但如果我們要站在抽象的角度, 也就是從教師與學生的父類"人"的角度, 來同時描述他們各自的行為時,我們怎麼描述?"人在授課"?"人在做作業"?這是不是怪怪的很不合適?不合適的問題就在於, 對於行為主體,我們使用了抽象層次的東東"人",而對於行為本身, 我們卻使用了具體的東東"授課"與"教書". 怎麼解決呢? 那就需要解決抽象與具體的矛盾問題.

既然是站在抽象在角度來描述,那我們把行為抽象一下,不就能同時描述了嗎?比如"人在做事"(教師授課與學生做作業都可以說**在做事),這樣就解決了抽象層次與具體層次之間的矛盾.

到了這一步, 我們可以把兩個描述: "教師在做事", "學生在做事" 兩者統一為"人在做事",

然後, 我們可以在"教師"的"做事"行為中去呼叫教師自己的特徵行為"授課",

在"學生"的"做事"行為中去呼叫學生自己的特徵行為"做作業",

所以,當呼叫"人"去"做事"的時候,如果這個人是教師,那他所做的事實際上就是"教書",

如果這個人是學生,那他所做的事實際上就是"做作業".

也就是說在這裡"人"是多型的, 在不同的形態時,特徵行為是不一樣的, 這裡的"人", 同時有兩種形態,一種是教師形態,一種是學生形態,所對應的特徵行為分別是"授課"與"做作業".

完成上述的描述過程, 其實就是多型機制的體現.

多型, 就是站在抽象的層面上去實施乙個統一的行為,到個體(具體)的層面上時, 這個統一的行為會因為個體(具體)的形態特徵而實施自己的特徵行為.

多型比起封裝與繼承來說要複雜很多, 上面的描述很簡單, 不用去死摳多型兩個字,

其實只要明白:

能站在抽象的角度去描述一件事,

而針對這件抽象的事, 對於每個個體(具體)又能找到其自身的行為去執行, 這就是多型.

物件導向的三個基本特徵 物件導向基本特徵

物件導向的三個基本特徵 封裝是物件和類概念的主要特徵,就是把客觀的封裝起來,只對外暴露出來,並把自己的資料和方法只讓可信的類或物件操作作用 隱藏實現細節,使得 模組化 使用現有類的所有功能,並且無需重新編寫原來的類中的方法對這些功能的擴充套件,oc只能實現單繼承,如果想要實現多繼承的話可以通過分類或...

OOP三個基本特徵

封裝最好理解了。封裝是物件導向的特徵之一,是物件和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需重...

物件導向三個基本特徵

封裝 將客觀事物抽象成類,每個類對自身的資料和方法通過各種許可權進行管理保護 繼承 實現繼承 使用基類的屬性與方法而無需額外編碼 可視繼承 了窗體使用父窗體的外觀和實現 介面繼承 僅使用屬性和方法,實現滯後到子類實現 前兩種是類繼承,後一種利用純虛函式。多型 將父物件設定成為乙個或多個更多的它的子物...