Kotlin自學日記之物件導向

2021-10-03 09:57:10 字數 3027 閱讀 2575

-物件

-類-繼承

-封裝-多型

物件的含義是指具體的某乙個事物,即在現實生活中能夠看得見摸得著的事物。在物件導向程式設計中,物件所指的是計算機系統中的某乙個成分。在物件導向程式設計中,物件包含兩個含義,其中乙個是資料,另外乙個是動作。物件則是資料和動作的結合體。物件不僅能夠進行操作,同時還能夠及時記錄下操作結果。

首先在這裡引用了物件導向中對物件的解釋。物件其實就是指現實中的具體事物每乙個具體的事物都有其對應的屬性,當對這些屬性進行歸類。可以歸結為資料和動作(方法),拿電視來舉例:其資料也就電視所具有的屬性的集合,電視的長、寬、薄厚、材質、介面等等這些基本的,固有的屬性;動作(方法)則包括:開電視,點播,換台,設定等等狀態改變。

物件=資料+方法

所以物件導向也就是指把資料和方法看做乙個整體,將其抽象化建模,更加貼近事物的自然執行規律。此時就可以方便的對乙個事物進行定義。也就是說通過對資料的建模可以輕易的對乙個電視進行建模:

此時引入類的概念

類是具有相同特性(資料元素)和行為(功能)的物件的抽象。因此,物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件,類實際上就是一種資料型別。類具有屬性,它是物件的狀態的抽象,用資料結構來描述類的屬性。

物件的抽象是類

抽象是指:將具體事物抽出,概括他們的屬性,特徵和關係等…

物件的抽象也就是說將乙個事物的方法和資料的屬性特徵和關係等抽出,然後利用建模的方式進行概括。概括後統稱為類。可以將類理解為一種模板,通過這個模板可以搭建出很多有相同屬性和方法的事物。

類的具體化就是物件

將模板的資料和方法進行具體化,就可以得到乙個個物件,資料和方法變化會得到不同的物件,比如(定義不準確,望海涵):

classtv(

var height:int,

var width:int,

var material:string,

var land:int,var brand:string)

//電視類:包含屬性 長寬厚度材質品牌

如果我給這個電視賦予長 100厘公尺 寬 60厘公尺 厚度50厘公尺 塑料材質 松下品牌的屬性 那麼它就是松下的乙個大頭電視;

如果我給電視賦予 100厘公尺 60厘公尺 2厘公尺 複合材料 海爾品牌的屬性, 那麼它就是海爾品牌的超薄電視

它們都是電視

卻因為屬性的引數有所不同而不同,也就是乙個將電視具體化為各個型別的電視

類是一種資料型別

類其實就是一種複雜的資料型別

在這裡我們定義乙個普通的資料型別:

var name:string=

"張三"

這乙個string型別的資料, 定義了乙個變數 名字 這個名字就相當於乙個類,也就是乙個模板,我們對名字的賦值不同,產生的物件就不一樣。可以是張三物件李四物件,但他們都是乙個名字。

回到上面的電視:

其實類就是多個簡單的資料型別組成的乙個複雜的資料型別。電視類包括了幾個變數,根據賦值的不同,產生不同的物件。

所以明白了類和物件的關係後,能夠更加深刻的理解該如何對乙個物件進行抽象。就能夠更加準確和詳細的去描述乙個事物。

繼承的通俗理解是(繼續用電視舉例子):我有乙個電視類,現在我可以定義出什麼品牌的什麼樣的電視,但是我現在有乙個新的需求,我要知道電視是led的還是va的 ,重新整理頻率是多少,能不能聯網。此時如果我再去重新定義乙個電視類那就得不償失了。費時又費力,此時我可以將電視類作為基類,也就是具有基本屬性的類,在此基礎上加上特殊的屬性成為乙個新的類,也就是派生類。

繼承是乙個一般到特殊的過程

繼承簡單地說就是一種層次模型,這種層次模型能夠被重用。層次結構的上層具有通用性,但是下層結構則具有特殊性。在繼承的過程中類則可以從最頂層的部分繼承一些方法和變數。類除了可以繼承以外同時還能夠進行修改或者新增。通過這樣的方式能夠有效提高工作效率。

封裝的通俗理解(計算器):我們在使用計算器的時候,輸入乙個資料 1+1=2,或者拉格朗日,開平方,平方也好,都是我們輸入乙個資料,然後計算器給我們乙個結果,我們無法看到計算器內部是怎麼樣去計算你輸入的資料,而是直接得到結果。

封裝,即隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀和修改的訪問級別;將抽象得到的資料和行為(或功能)相結合,形成乙個有機的整體,也就是將資料與運算元據的源**進行有機的結合,形成「類」,其中資料和函式都是類的成員。

class

dog(

var kind:string,

var name:string,

var age:int,

var character:string)

funmain

(args:array

)

此時dog類就是被封裝好的,我們在主函式中直接呼叫這個類,定義好的dog01就是乙個物件,此時類具體化為乙個叫妞妞的拉布拉多3歲開朗小狗子,我們可以知道dog類,但是卻無法知道內部的資料和功能是什麼樣的,比如我們不知道裡面根據狗子的品種和年齡可以算出它患某些**疾病的概率(我沒寫,不知道咋寫哈哈哈)我們直接輸入就可以得出乙個概率。這個類就是被封裝好的,我們直接呼叫即可。

多型實際上是一種功能的不同種實現:比如日常行為中:吃飯,有人喜歡用筷子吃,有人喜歡用勺子吃。他們的行為都是吃飯,在程式定義初期,並沒有規定誰要怎麼吃飯,而是在執行的過程中,根據資料的不同,得到的行為是不同的。張三喜歡用勺子吃飯,李四喜歡用筷子,那麼輸入資料張三的時候,就會得到喜歡用勺子,輸入李四就得到喜歡用筷子。同一種行為,不同的實現方式

菜鳥自學Java之「物件導向程式設計」

物件導向程式設計object oriented programming 1.類class 現實生活中對一類具有共同特徵的事物的抽象。例如 乙個 車 的類,可以是小汽車 卡車 共同特徵的乙個抽象。簡言之,類是用來描述現實世界中一類實物共同的性質和操作方法 2.物件object 物件就是現實世界中的實體...

java之物件導向

類是用於描述同一型別的物件的乙個抽象。類中定義了這一類物件所具有的靜態和動態屬性 靜態屬性 成員變數 動態屬性 方法 1 類可以看成是一類物件的模板,物件可以看成該類的乙個具體例項 2 首先必須定義類才能有物件 說到類,就不得不說構造其構造方法了 在new乙個物件是,呼叫的就是類中的構造方法 列如p...

static之物件導向

一 靜態資料成員子 includeusing namespace std class point int point num 0 定義靜態資料成員 int main 對於類的非靜態資料成員,每個類物件都有自己的拷貝。而對於靜態資料成員被當作是類的成員。就像上述例子中,雖然定義了4個物件,但是靜態資料...