類
類的定義
在現(xiàn)實(shí)世界中,經(jīng)常有屬于同一個(gè)類的對象。例如,某輛自行車只是世界上很多自行車中的一輛。在面向?qū)ο筌浖?,也有很多共享相同特征的不同的對象:矩形、雇用記錄、視頻剪輯等。可以利用這些對象的相同特征為它們創(chuàng)建一個(gè)藍(lán)圖。對象的軟件藍(lán)圖稱為類。
類是定義同一類所有對象的變量和方法的藍(lán)圖或原型。例如,可以創(chuàng)建一個(gè)定義包含當(dāng)前檔位等實(shí)例變量的自行車類。這個(gè)類也定義和提供了實(shí)例方法(變檔、剎車)的實(shí)現(xiàn)。
實(shí)例變量的值由類的每個(gè)實(shí)例提供。因此,當(dāng)創(chuàng)建自行車類以后,必須在使用之前對它進(jìn)行實(shí)例化。當(dāng)創(chuàng)建類的實(shí)例時(shí),就創(chuàng)建了這種類型的一個(gè)對象,然后系統(tǒng)為類定義的實(shí)例變量分配內(nèi)存。然后可以調(diào)用對象的實(shí)例方法實(shí)現(xiàn)一些功能。相同類的實(shí)例共享相同的實(shí)例方法。
除了實(shí)例變量和方法,類也可以定義類變量和類方法。可以從類的實(shí)例中或者直接從類中訪問類變量和方法。類方法只能操作類變量 - 不必訪問實(shí)例變量或?qū)嵗椒ā?/span>
系統(tǒng)在第一次在程序中遇到一個(gè)類時(shí)為這個(gè)類創(chuàng)建它的所有類變量的拷貝 - 這個(gè)類的所有實(shí)例共享它的類變量。
類和對象
對象和類的說明其實(shí)很相似。實(shí)際上,類和對象之間的差別經(jīng)常是一些困惑的起源。在現(xiàn)實(shí)世界中很明顯,類不是它描述的對象 - 自行車的藍(lán)圖不是自行車。但是在軟件中就有點(diǎn)難區(qū)分類和對象。這部分是由于軟件對象只是現(xiàn)實(shí)世界的電子模型或抽象概念。但是也由于很多人用“對象”指類和它們的實(shí)例這兩者。
抽象類
抽象類被定義為永遠(yuǎn)不會也不能被實(shí)例化為具體的對象。它往往用于定義一種抽象上的概念,在類的繼承關(guān)系中它往往被定義在較上層的位置。在程序設(shè)計(jì)的實(shí)踐活動(dòng)中,抽象類與接口存在類似的地方,即它更偏重于對共通的方法和屬性進(jìn)行規(guī)約。但與接口存在一個(gè)非常大的差異則在于,抽象類往往可以規(guī)約一個(gè)共同的方法和屬性時(shí)提供一個(gè)對他們的實(shí)現(xiàn)。
以現(xiàn)實(shí)世界為例:"水果"可以算作一個(gè)抽象類,而"蘋果","香蕉"則可以作為它的派生類。區(qū)別在于,"水果"是個(gè)概念,它不會有實(shí)例,但是"蘋果"和"香蕉"則肯定會有實(shí)例。
類的好處
對象提供了模型化和信息隱藏的好處。類提供了可重用性的好處。自行車制造商一遍一遍地重用相同的藍(lán)圖來制造大量的自行車。軟件程序員用相同的類,即相同的代碼一遍一遍地創(chuàng)建對象。
參見
面向?qū)ο蟪绦蛟O(shè)計(jì)
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}