該篇文章只是說明抽象類的乙個使用場景,由於小弟水平一般,如果有說的不對地方希望各位大牛們指出,也歡迎各位親們補充。
什麼是抽象類
用關鍵字abstract定義的類即為抽象類,且只能作為基類。
抽象類注意的地方
1、 用abstract定義的類不一定包含抽象方法,也可以包含非抽象方法。
2、abstract定義的方法一定包含在抽象類中。
3、抽象類不能被例項,只能被繼承並且派生類需要重寫(overriding)抽象類中的抽象方法。
4、抽象類不能定義為密封類(sealed)
5、 如果派生類沒有實現所有的抽象方法,則該派生類也必須宣告為抽象類。
例項
下面我通過乙個簡單的例子說明一下抽象類的使用場景。
假入我們的系統中所有進行ajax互動的後台檔案都是***x.ashx(一般處理檔案),此時我們就可以寫乙個basehandler的抽象類提供其他***x.ashx檔案中的類繼承,這樣我們就可以在basehandler中進行統一的公共處理,如錯誤處理等,還可以讓所有的派生類都必須實現basehandler中的抽象方法,這樣就可以使所有的派生類看起來非常統一,有助於**從高層次角度進行規範,不羅嗦了上**。
子類必須繼承重寫的方法
所有的***.ashx都需要繼承該類且必須要重寫抽象函式init(httpcontext context)
其中method引數是每個ajax請求都必須有的,值為呼叫的方法名稱,對該引數的了解請繼續往下看。
2、派生類dataservice.ashx
publicclass
dataservice : handlerbase
public
void
hellword()
}
method引數的值為需要呼叫的方法的名稱,並賦值給method變數,通過反射根據method的值決定呼叫具體的方法,這樣當方法很多時可以簡化init中的判斷,不過可能會犧牲一些效率。
3、ajax呼叫dataservice.ashx
引數method的值說明了要呼叫的方法為hellword()
抽象類練習(c primer plus)
今晚看 c primer plus 做的練習題,呵呵,做的不怎麼好,希望高手如果有時間指點一二,謝謝誒!c primer plus p475練習題3 修改 basedma lacksdma hasdma類,讓他們都從乙個基類派生出來,實現和程式單13.10一樣的基本功能,注意使用基類陣列指標,在類中...
c 抽象類練習
animal.h pragma once define crt secure no warnings 抽象層 include include using namespace std class animal class dog public animal class cat public anima...
abstract抽象類練習
1.抽象方法 由abstract修飾的方法 2.特點 沒有方法體 3.抽象類 由abstract修飾的類 模組 4.特點 不能建立物件 5.抽象類中可以沒有抽象方法 6.抽象類由子類建立物件 7.子類可以建立物件,實現所有的抽象方法,沒有實現全部的抽象方法,當前類宣告為抽象類 練習 定義乙個類表示形...