C 基礎知識整理 基礎知識(6) 抽象類和抽象方法

2021-06-07 08:26:55 字數 1938 閱讀 7758

在實際專案中,當我們設計乙個父類時,經常會遇到這個類不能確定它的具體執行流程的。比如我設計乙個檔案類:

public class afile

}public string path

}public filetype type

}public afile(string name, string path, filetype type)

public void copy(string destpath)

}public enum filetype

這是乙個父類,它的copy方法,應該怎麼寫呢?因為檔案存在四種狀態甚至後來根據需要還可能再加,針對不同的檔案型別,拷貝方法是不一樣的,而且根據專案需要還可能針對某種檔案做一些特殊處理。這樣再設計這個父類時就不能對copy方法寫**,只需要誰繼承它誰就重寫這個方法,根據需要寫不同的執行**。

這樣,乙個類具有某個方法,但是該方法沒有具體執行過程,這樣的方法稱之為「抽象方法」。

上面的afile類中copy方法就叫抽象方法,但是隨之有乙個問題,如果例項化了這個afile類,copy方法也就是這個物件的行為了,但實際上copy方法還不確定。這樣不符合客觀事物規律。因此,這個類是不能被例項化的,也就是說當類中有抽象方法時,這個類不能被例項化,這樣的類稱之為「抽象類」。抽象不能被例項化,但它還是類。抽象類和抽象方法用abstract關鍵字修飾。

可以看到,抽象類中就存在了兩種方法:抽象方法和非抽象方法。

非抽象方法,抽象類被繼承,子類擁有非抽象方法,可以直接使用,也可以重寫覆蓋。

抽象類,必須覆蓋重寫。

修改上述的檔案類:

using system;

using system.collections.generic;

using system.text;

using system.io;

namespace yys.csharpstudy.mainconsole

}public string afilepath

}public filetype type

}public afile(string name, string path, filetype type)

public abstract void copy(string destpath);

}public enum filetype

/// /// 檔案類

///

public class fileinfo : afile

/// /// 檔案的拷貝方法

///

public override void copy(string destpath)}}

}/// /// 資料夾類

///

public class filedirectoryinfo : afile

/// /// 檔案的拷貝方法

///

public override void copy(string destpath)}}

/// /// 拷貝資料夾的方法

///

private void copydirectory(string sourcepath, string destpath)

directoryinfo directoryinfo = new directoryinfo(sourcepath);

foreach (filesysteminfo fileinfo in directoryinfo.getfilesysteminfos())

else}}

}catch{}}}

}

這樣,就完成了抽象類的繼承並實現。但是如果子類繼承了抽象類,但是並沒有實現抽象方法,那麼這個子類也將作為乙個抽象類存在。有抽象方法的類叫做抽象類,對於有些情況,沒有抽象方法的類,也可以使用abstract關鍵字定義為抽象類,這樣表明該類不能被抽象,必須被繼承。

C 基礎知識整理 基礎知識(6) 抽象類和抽象方法

在實際專案中,當我們設計乙個父類時,經常會遇到這個類不能確定它的具體執行流程的。比如我設計乙個檔案類 public class afile public string path public filetype type public afile string name,string path,fil...

C 基礎知識整理 基礎知識(2) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...

C 基礎知識整理 基礎知識(2) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...