1.類是什麼?
類就相當於模板,就是把同一類的事物的共同特徵進行的抽象。
類的建立和說明:
類是先根據一些具體的物件
(實體的東西
)來抽象出來的共同的特性,然後用**來表示.
在類中,用資料表示事物的狀態,用函式(方法)實現事物的行為動作。
當建立乙個類時,系統會預設的新增乙個建構函式,如果使用者自己寫乙個建構函式則會覆蓋這個預設的建構函式。當然建構函式也是可以過載的。
建構函式的特點:
建構函式名必須與類名相同。
不能有任何的返回值型別。
訪問修飾符一般都是public.
如果乙個類中有乙個建構函式,並且這個建構函式用的private修飾的,那麼這個類是不能例項化的。因為要例項乙個類時,必須去呼叫這個類的建構函式。因此可以寫在這個類中寫乙個靜態的方法,在方法中來例項這個類。
方法的重寫:
是與引數的個數和引數的型別有關,與返回值沒有關係。
說到了類和方法,那麼就有必要的說一下變數的作用域了:
是宣告這個變數與最近的大括號的內部。
區域性變數必須要先賦值後才能夠使用。
而類的成員變數是可以不用賦值,就可以先使用,因為建構函式是會初始化這個變數的。
如果在乙個方法中宣告了乙個與類的成員變數相同的變數,那麼在使用時,呼叫類的成員變數要用this 與之區分開,如果不用this 那麼方法中的變數要優先於成員變數。this就是表示當前類的物件。
2.物件是什麼?
物件就是指某乙個具體的事務。在程式中它是類的乙個例項。簡單的說就是new出來的。
3.物件導向是什麼?
物件導向是一種分析問題的方式 主要的作用就是增加程式的可擴充套件性。
物件導向的優點:
它能夠構建與現實世界相對應的問題模型,並保持他們的結構、關係和行為模式。
物件導向的三大特性: 封裝、繼承、多型。
封裝:
就是把事物的狀態和行為封裝在類中,使用類的人不需要知道類內部是怎麼實現的,只要呼叫其中的屬性和方法實現功能就行了。
在程式中封裝具體的實現:
屬性封裝了字段。
將多個方法封裝成乙個物件。
將一堆**封裝到乙個方法中。
將一些功能封裝到了幾個類中。
將一些具有相同功能的**封裝到乙個程式集中(dll 、exe),並且對外提供統一的訪問介面。(例:公司的每個部門的部門經理,與其他部門協作。)
繼承:它是指類與類之間的關係,並且類是不能相互繼承的。如果乙個類沒有顯示繼承自任何乙個類,預設是繼承
object
類(object類是所有類的的父類)。
如果顯示指定了當前類的繼承自某個類,則將覆蓋預設的object類。
繼承的優點 :
**的重用
多型(黎克特制替換原則lsp)(程式的可擴充套件性、靈活性),下面說明
子類繼承父類的屬性、方法、字段,使建立子類變得很簡單,實瑞了**的重用,和多型。但要記的子類只能繼承父類中非私有的東西。
繼承後關於建構函式的問題:
1.類的建構函式是不能被繼承的。只能在子類中去呼叫父類的建構函式。
2.子類的建構函式會預設去呼叫父類中的無引數的建構函式,當然也可以自己來設定呼叫父類的哪乙個建構函式。
(1)當在父類中寫了帶參的建構函式,記的要再增加乙個無參的建構函式,(這也說明建構函式是可以過載的。)因為當自己在類中寫了建構函式會覆蓋系統預設的建構函式。
(2)當然也可以在子類的建構函式加上:base(父類建構函式要傳的引數),這樣就是呼叫父類中帶引數的建構函式了。
3.在當前類的建構函式中去也可以去呼叫當前類的另乙個構造方法。用:this(引數),這樣可以少寫建構函式裡的內容了。
注意:在建構函式中如果用this()就不能再用:base(),相反也是一樣的。
當呼叫從父類中繼承過來的成員的時候,如果子類沒有重寫則this.成員與base.成員是沒有區別的。如果子類重寫了父類成員,則this.成員,呼叫的是子類重寫以後的。base.成員,呼叫的依然是父類的成員。
類的單根繼承性:乙個子類只能繼承乙個父類。
類的傳遞性:子類繼承父類的方法和屬性等,同時還繼承了父類的父類的屬性和方法。
重要的特性: 父類物件可以引用子類例項,它編譯的是父類物件,但執行卻是乙個子類物件。具體特徵:
被宣告為父類物件,擁有父類的屬性等,占用子類的記憶體空間,子類方法覆蓋父類的方法時,此時物件呼叫的是子類的方法;否則自動呼叫繼承父類的方法,也就是說父類不能去呼叫子類中獨有的成員。
關於父類中私有成員是否被繼承的問題
個人觀點:所有私有成員沒有被繼承。是指沒有辦法去訪問,並不代表記憶體中不存在。
例如:兒子繼承了父親的一千萬,但不能花。
訪問級別的問題:(兒子能去的地方爹一定要能去)
子類的訪問級別必須比父類的級別要低或相同。
當前類中的成員的訪問級別不能比所對應的型別訪問級別高(包括方法的引數。)
多型:多型就是多種表現的形態, 具體的是指不同物件收到相同訊息時,會產生不同行為,同乙個類在不同的場合下表現出不同的行為特徵。
實現多型的主要手段: 1.虛方法virtual, 2抽象方法abstract 3介面。
虛方法使用:
虛方法必須有方法體,當然方法體中可以不寫內容
子類繼承父類,其實父類的虛方法可以重寫,也可以不重寫。
虛方法可以寫在普通類中
虛方法與抽象方法的區別:
1.虛方法必須有方法體,抽象方法不能有方法體。
2.抽象方法必須在抽象類中宣告,虛方法可以出現在抽象類中也可以在普通類中宣告。
3.抽象方法必須在子類中重寫,虛方法可以被重寫,也可以不重寫。
多型的作用:
把不同的子類物件當作父類來看,可以遮蔽不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適應需求的不斷變化。
多型的含義:
使得能夠利用基類的指標來引用不同子類的物件,以及根據所引用物件的不同,以不同的方式執行相同的操作。
總結的說多型的意義就是為了程式可擴充套件性,並且節省成本和提高效率。
C 物件導向 , 類與物件
一,類的字段 類的字段,就是類裡面的 資料。二,類的方法 1 函式的過載 如何判斷 是由兩個或多個同名函式組成的,但是函式要有不同的引數 或個數。引數 是函式的輸入的東西 shuchu shuchu inta shuchu int aaa string bbb 2,類的字段 俗點說就是類裡面定義的變...
C 物件導向 , 類與物件
一,類的字段 類的字段,就是類裡面的 資料。二,類的方法 1 函式的過載 如何判斷 是由兩個或多個同名函式組成的,但是函式要有不同的引數 或個數。引數 是函式的輸入的東西 shuchu shuchu inta shuchu int aaa string bbb 2,類的字段 俗點說就是類裡面定義的變...
物件導向 類與物件
物件導向是相對於面向過程而言的,具體的來說,比如 我們想要吃一頓午飯,我們親自買菜,洗菜.切菜,炒菜,煮飯,這樣做成一桌菜就叫面向過程,也就是說整個過程 你都親自完成,而 物件導向呢?點外賣 點一桌子菜和公尺飯 不管他咋做出來的 面向過程程式設計 就是 我們想要實現乙個功能 直接去呼叫別人寫好的功能...