Chinar 堅持將簡單的生活方式,帶給世人! (擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例) |
助力快速理解 抽象類、抽象函數 為新手節省寶貴的時間,避免采坑! |
1
Abstract Class —— 抽象類
抽象類 —— 修飾詞 : abstract
抽象父類中的 抽象函數 是不完整的,只有方法名和參數,並沒有方法體
任何繼承於抽象類的子類,都需要重 寫父類(抽象類) 中的所有 抽象函數/抽象方法
下面我們舉個栗子,來說明抽象類的具體用法
2
Abstract Parent Class —— 抽象父類
在VS控制台程序中,創建一個抽象類
為了便於理解, Chinar 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
//無需任何引用,即可創建抽象類
namespace 抽象類
{
/// <summary>
/// 抽象類 —— 修飾詞:abstract
/// </summary>
public abstract class ChouXiang//弱爆的拼音命名法,便於新手理解
{
/// <summary>
/// 類中可以有 虛方法等
/// </summary>
public virtual void Eat() //虛方法可以重寫,也可以不重寫,直接繼承
{
Console.WriteLine("抽象父類中:吃方法");//是有方法體的
}
/// <summary>
/// 指紋 —— 就是一個抽象函數。因為此函數,子類只要用到,必須要重寫的。
/// 所以就有了抽象類,這種不完整的模板 —— 沒有方法體
/// </summary>
public abstract void FingerPrint();
public abstract void FingerPrint1();
public abstract void FingerPrint2();
public abstract void FingerPrint3();
public abstract void FingerPrint4();
public abstract void FingerPrint5();
}
}
3
Abstract Parent Class —— 抽象父類
在VS控制台程序中,創建一個抽象類
為了便於理解, Chinar 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
using System;
namespace 抽象類
{
/// <summary>
/// 人類:繼承與抽象類
/// 當一個類,繼承抽象類的時候,必須實現抽象函數
/// </summary>
class People : ChouXiang
{
/// <summary>
/// 可直接通過 VS implement missing members :實現丟失的成員,一鍵實現所有抽象函數的重寫
/// 必須去重寫父類中的抽象函數,具體函數體,根據需求實現
/// </summary>
public override void FingerPrint()
{
Console.WriteLine("人類的指紋");
}
public override void FingerPrint1()
{
throw new NotImplementedException();
}
public override void FingerPrint2()
{
throw new NotImplementedException();
}
public override void FingerPrint3()
{
throw new NotImplementedException();
}
public override void FingerPrint4()
{
throw new NotImplementedException();
}
public override void FingerPrint5()
{
throw new NotImplementedException();
}
}
}
4
Abstract Parent Class —— 抽象父類
在VS控制台程序中,創建一個抽象類
為了便於理解, Chinar 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
using System;
namespace 抽象類
{
/// <summary>
/// 測試項目類:繼承自人類People
/// 由於PeoPle已經將抽象類ChouXiang中 抽象函數重寫,所以下邊可以直接調用PeoPle中的方法
/// </summary>
class Program : People
{
static void Main(string[] args)
{
People p = new People();
p.FingerPrint();
ChouXiang c = new People(); //可以通過抽象類去聲明對象,但不可以去構造.只能用其派生類構造
c.Eat(); //用派生類構造后,可調用ChouXiang類中函數
c.FingerPrint(); //由於對 FingerPrint 是重寫了,所以父類中的方法是不存在的。
Program program = new Program();
program.FingerPrint();
Console.ReadLine();
}
}
}
控制台輸出:
人類的指紋
抽象父類中:吃方法
人類的指紋
人類的指紋
支持
May Be —— 搞開發,總有一天要做的事!
Chinar 提供一站式教程,閉眼式創建! 為新手節省寶貴時間,避免采坑! |
先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)
1 —— 雲服務器超全購買流程 (新手必備!)
2 —— 阿里ECS雲服務器自定義配置 - 購買教程(新手必備!)
3—— Windows 服務器配置、運行、建站一條龍 !
4 —— Linux 服務器配置、運行、建站一條龍 !

技術交流群:806091680 ! Chinar 歡迎你的加入
本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究
對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com
對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址