抽象類、抽象函數/抽象方法詳解


抽象類運用


本文提供全流程,中文翻譯。

Chinar 堅持將簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例)



Chinar —— 心分享、心創新!

助力快速理解 抽象類、抽象函數

為新手節省寶貴的時間,避免采坑!



全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1

Abstract Class —— 抽象類


抽象類 —— 修飾詞 : abstract

抽象父類中的 抽象函數 是不完整的,只有方法名和參數,並沒有方法體

任何繼承於抽象類的子類,都需要重 寫父類(抽象類) 中的所有 抽象函數/抽象方法
舉個栗子黑白88
下面我們舉個栗子,來說明抽象類的具體用法


2

Abstract Parent Class —— 抽象父類


在VS控制台程序中,創建一個抽象類

為了便於理解, Chinar 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
舉個栗子黑白88

//無需任何引用,即可創建抽象類

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 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
舉個栗子黑白88

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 已經用上了弱爆的拼音命名法,請高手給予理解與寬容
舉個栗子黑白88

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 歡迎你的加入


END

本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com

對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM