VR開(kāi)發(fā)入門(mén)教程23:面向?qū)ο笾^承
來(lái)源:
奇酷教育 發(fā)表于:
繼承面向?qū)ο笾械膬蓚€(gè)重要概念:抽象和分類(lèi)。抽象和分類(lèi)是人們認(rèn)識(shí)世界的基本方法:抽象是將現(xiàn)實(shí)世界中客觀存在的事務(wù)映射到意識(shí)中的一種方
繼承
面向?qū)ο笾械膬蓚€(gè)重要概念:抽象和分類(lèi)。
抽象和分類(lèi)是人們認(rèn)識(shí)世界的基本方法:
抽象是將現(xiàn)實(shí)世界中客觀存在的事務(wù)映射到意識(shí)中的一種方法。
分類(lèi)是指確定這些抽象到意識(shí)中的概念之間的關(guān)系。
這些關(guān)系的基本形式包括一般到特殊和整體與局部。
在面向?qū)ο笾?,一般到特殊的關(guān)系用繼承(Inheritance)表示;整體與局部的關(guān)系用組合(composition)表示。
繼承的概念
繼承是由已有的類(lèi)創(chuàng)建新類(lèi)的機(jī)制。
由繼承得到的類(lèi)稱為子類(lèi)(派生類(lèi)),被繼承的類(lèi)稱為父類(lèi)(超類(lèi))(基類(lèi))
繼承的原則
子類(lèi)繼承父類(lèi)的成員變量和成員方法
子類(lèi)不繼承父類(lèi)的構(gòu)造方法,能夠繼承父類(lèi)的析構(gòu)方法
子類(lèi)不能刪除父類(lèi)的成員,但可以重定義父類(lèi)成員
子類(lèi)可以增加自己的成員
繼承的作用
實(shí)現(xiàn)軟件可重用的重要方式
增強(qiáng)軟件可擴(kuò)充性
提高軟件的可維護(hù)性
繼承定義
定義繼承的類(lèi)
聲明子類(lèi)
[<修飾符>] class<子類(lèi)名> :(extends) <基類(lèi)名>
Object類(lèi)
C#語(yǔ)言中所有的類(lèi)都是Object的直接或間接子類(lèi)。
子類(lèi)對(duì)象對(duì)父類(lèi)成員的訪問(wèn)權(quán)限:
子類(lèi)對(duì)父類(lèi)的私有成員(private)沒(méi)有訪問(wèn)權(quán)限
子類(lèi)對(duì)父類(lèi)的公有成員(public)和保護(hù)成員(protected)和內(nèi)部成員(internal)具有訪問(wèn)權(quán)限
隱藏
子類(lèi)中可定義與父類(lèi)成員同名的成員
此時(shí)父類(lèi)的成員被隱藏
注意:程序中會(huì)出現(xiàn)警告 警告不影響執(zhí)行
消除警告的方法 在隱藏的屬性或方法上追加new關(guān)鍵字
Base
base用來(lái)引用當(dāng)前對(duì)象的父類(lèi),用base可以實(shí)現(xiàn)對(duì)父類(lèi)成員的訪問(wèn)。
訪問(wèn)父類(lèi)被隱藏的成員變量,如:
base.variable;
調(diào)用父類(lèi)中被覆蓋的方法,如:
base.Method([paramlist]);
調(diào)用父類(lèi)的構(gòu)造函數(shù),如:
:base([paramlist]);
注意:base維系了整個(gè)繼承關(guān)系
向上轉(zhuǎn)型
子類(lèi)和父類(lèi)具有is a的關(guān)系,例如對(duì)于父類(lèi)“人”和子類(lèi)“學(xué)生”,我們可以說(shuō)“學(xué)生”是“人”。因此,可以使用父類(lèi)的引用指代子類(lèi)的實(shí)例,這種情況被稱為Upcasting。上轉(zhuǎn)型對(duì)象可以訪問(wèn)子類(lèi)繼承或覆蓋的成員;不能訪問(wèn)子類(lèi)中新增的成員。上轉(zhuǎn)型對(duì)象可以被重新賦值為子類(lèi)實(shí)例,這時(shí)它又重新可以訪問(wèn)子類(lèi)中新增成員。