1樓:匿名使用者
定義抽象類和抽象方法:
abstract
抽象類特點:
1、不能初始化的類被叫做抽象類,它們只提供部分實現,但是另一個類可以繼承它並且能建立它們的例項
2、一個抽象類可以包含抽象和非抽象方法,當一個類繼承於抽象類,那麼這個派生類必須實現所有的的基類抽象方法
3、通過宣告派生類也為抽象,我們可以避免所有或特定的虛方法的實現,這就是抽象類的部分實現
4、一個抽象類能夠繼承另一個非抽象類,另外,繼承了基類的方法,新增新的抽象和非抽象方法是可行的
5、一個抽象類也能從一個介面來實現,這種情況,我們必須為所有的方法提供方法體,這些方法是來自介面
6、一個抽象類必須為所有的介面成員提供實現,一個用於實現介面的抽象類可能把介面方法安排到抽象方法上
抽象方法特點:
1、abstract關鍵字只能用在抽象類中修飾方法,並且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現
2、一個抽象方法可以看作是一個虛擬函式,抽象方法的宣告只能在抽象類中
3、抽象方法宣告只提供一個無實現的方式,沒有方法體
4、方法體的實現被覆寫方法提供,覆寫方法是一個非抽象類的成員
5、抽象屬性的行為和抽象方法相像,除了不同的宣告形式
6、在一個靜態屬性中使用abstract 是一個錯誤
7、一個抽象屬效能夠通過派生類使用 override 實現
virtual 用於定義虛方法:
virtual 關鍵字用於在基類中修飾方法。virtual的使用會有兩種情況
1、在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那麼在對派生類例項的呼叫中,該虛方法使用的是基類定義的方法
2、在基類中定義了virtual方法,然後在派生類中使用override重寫該方法。那麼在對派生類例項的呼叫中,該虛方法使用的是派生重寫的方法
抽象類實現介面,怎麼在抽象類中注入dao層
2樓:育知同創教育
你的抽bai象類既然繼承du了介面,就可以選擇性的zhi實現介面的方法或dao不實現,也可以擴回展自己的答成員方法。這個是前提。
其次,你正常注入dao層就行了,一般通用的方法也可以寫在裡面。
需要注意的是,你的子實現類在繼承這個抽象類的時候,必須實現介面中沒有被父抽象類實現的方法和父類中擴充套件的抽象方法。
c#抽象類可以有構造方法嗎,若是有如何實現及呼叫
3樓:
先有一個基本的概念:抽象類不可以例項化。也就是說,如果你宣告瞭這樣一個類:
public abstract class baseclass
}然後在客戶端baseclass base = new baseclass(1);這樣呼叫的話,編譯器會報錯。
抽象類的建構函式只能在其子類的建構函式中呼叫,也就是說,不管是否是抽象類,無參構造自動呼叫,帶引數的建構函式必須顯式呼叫。可以這樣在子類中呼叫父類的建構函式(使用base關鍵字):
public class childclass : baseclass}
c#中抽象類可以被繼承嗎?
c#中抽象類中必須有一個抽象方法嗎
4樓:匿名使用者
不是,抽象類可以不包含抽象方法,如果包含抽象方法,必須在子類中實現。
c#中抽象類的子類仍然是抽象類,那子類是否需要實現父類的方法(父類全是抽象方法)
5樓:匿名使用者
為抽象類
2.若父類包含有抽象方法(父類肯定是抽象類了), 子類必須去實現它
2. 若父類是抽象類,但某個方法是非抽象的, 那麼子類可以直接繼承這個方法(不用實現)
c#抽象類可以包括有方法體的方法嗎
c#的抽象類中,抽象方法和純虛擬函式區別
6樓:曹朕植
問題1:含有virtual修飾符的方法稱為虛擬方法。不能像你說的那樣定義。
問題2:
1)虛擬方專法,子屬類可以選擇性重寫此方法,也可以不重寫;而抽象(abstract
)方法,子類必須重寫。
2)虛擬方法可以有實體,如:
public virtual void vt()所以,可以直接呼叫虛擬方法;而抽象方法不能宣告方法實體,public abstract void ab(),不能直接呼叫。
3)虛方法可以實現多型,而抽象方法不可以
如果一個類被宣告為abstract,
則在該抽象類中,可以存在沒有實現的方法,但該方法須宣告為abstract,
在其子類中,通過override關鍵字修辭幷包含具體的實現抽象類中的虛方法使用virtual關鍵字描述,並在子類中實現與抽象方法不同的是,虛方法可以有具體的實現,而抽象方法不可以有實現,類似於介面中規範的定義
7樓:一郎大神
1.沒有你說的純虛擬函式,但是可以用委託通過匿名函式達到類似的效果。比如使用lambda表示式,x => x * 6指定名內為x的參容數並返回x的值計算的。
如下面的示例所示,可以將此表示式傳遞給委託型別:
delegate int del(int i);
static void main(string args)2. 虛方法必須有實現部分,併為派生類提供了覆蓋該方法的選項;
抽象方法沒有提供實現部分,抽象方法是一種強制派生類覆蓋的方法,否則派生類將不能被例項化。
8樓:
問題1:含有
baivirtual修飾符的方法du稱為虛擬方法。不能像zhi你說的那dao樣定義。
問題2:
1)虛擬方法,專子類可以屬選擇性重寫此方法,也可以不重寫;而抽象(abstract
)方法,子類必須重寫。
2)虛擬方法可以有實體,如:
public virtual void vt()所以,可以直接呼叫虛擬方法;而抽象方法不能宣告方法實體,public abstract void ab(),不能直接呼叫。
3)虛方法可以實現多型,而抽象方法不可以
9樓:破曉崇明
如果來一個類被宣告為abstract,
則在該源抽象類中,可以存在沒有實現的方法,但該方法須宣告為abstract,
在其子類中,通過override關鍵字修辭幷包含具體的實現抽象類中的虛方法使用virtual關鍵字描述,並在子類中實現與抽象方法不同的是,虛方法可以有具體的實現,而抽象方法不可以有實現,類似於介面中規範的定義
10樓:匿名使用者
高質量認證每次進來都是好幾年之前的問題了。
抽象類中是否一定要有抽象方法?
11樓:
在程式設計語句中用 abstract 修飾的類是抽象類。抽象類是不完整的,它只能用作基類,不能生成物件。抽象類可以包含抽象方法、非抽象方法和抽象訪問器。
可以建立一個變數,其型別是一個抽象類,並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法。
12樓:匿名使用者
抽象類可以沒有抽象方法,但是如果你的一個類已經宣告成了抽象類,即使這個類中沒有抽象方法,它也不能再例項化,即不能直接構造一個該類的物件。
如果一個類中有了一個抽象方法,那麼這個類必須宣告為抽象類,否則編譯通不過。
13樓:徐子陵丶
不對,抽象類中宣告的抽象方法必須加public abstract,只有public沒有abstract會提示你重寫方法體。抽象類中宣告的抽象方法 public abstract 不能省略。
14樓:day優質小年輕
可以沒有抽象方法,你和樓主討論的不是一個問題
15樓:甜甜雨萌貓貓啦
有抽象方法的類一定是抽象類,但抽象類不一定有抽象方法
例如httpservlet是抽象類,但沒有抽象方法。
抽象類不能被例項化
抽象類中的方法不一定是抽象方法嗎
當然是可以的,如下 public abstract class apublic abstract void method2 public static void mehtod3 如果一個類中含有abstract方法,那麼這個類必須用abstract來修飾,當然abstract類也可以沒有abstra...
C 多型性實驗定義抽象類 容器內container,其中定義了若干純虛擬函式,實現求表面積,體積輸出功能
這樣 include using namespace std class container 定義抽象類conyainer 虛擬函式 virtual xx 虛擬函式virtual void const 0 純虛擬函式 private class x public container 公用派生類 x ...
c中,基類是抽象類(有純虛擬函式),在派生類(公有繼承)中,能不能呼叫初始化基類物件
能呼叫如果創bai建物件是b b 2,3 那du麼就會執行b int m,int n 0 這個zhi建構函式dao,進而顯式呼叫了基類a的構專造函式a int a 因屬為初始化列表裡寫明瞭a m 構造方式 假如沒有這個a m 語句,那麼就會呼叫a的預設建構函式,但a裡沒有寫a 所以就會報錯 沒有適合...