C#抽象クラスと抽象メソッド(抽象クラス、抽象メソッド概念、使用)

1901 ワード

抽象クラスの概念:時には抽象的なものを表現することがあります.それは概括であり、実体になる必要はありません.そのため、オブジェクト向けに抽象クラスがあります.
具体的には、会社に属している従業員ですが、会社は名前にすぎません.エンティティになる必要はありません.だから、会社は抽象的なクラスです.
抽象クラスの特徴:
抽象クラスはabstract修飾子を使用し、ベースクラスとしてのみ使用できます.抽象クラスはインスタンス化できません.new演算子を使用してインスタンスを作成すると、コンパイルエラーが発生します.抽象クラスに抽象メンバーを含めることは許可されますが、要求されません.(非抽象クラスには抽象メンバーを含めることはできません)抽象クラスは密封できません.抽象クラスは抽象クラスに継承され、結果は抽象クラスです.
抽象メソッド:抽象メソッドの特徴:抽象メソッドは暗黙的な虚メソッドであり、抽象メソッドは抽象クラスでしか宣言できない.  抽象メソッドではprivate、static、virtual修飾子は使用できません.(抽象的なメソッドのデフォルトはvirtualメソッドです)  抽象メソッドは、派生クラスにbaseキーワードでアクセスできません.  抽象メソッド宣言は実際の実装を提供せず、メソッド体はありません.抽象メソッドを実装するには、派生クラス(非抽象クラス)でこの抽象メソッドを書き換える必要があります.継承クラスは、すべての抽象クラスの抽象メソッドを実装してからインスタンス化されます.
抽象クラス抽象メソッドの定義、使用:
    public abstract class myClass
    {
        private string id = "";
        private string name = "";
        public string ID
        {
            get{  return id; }
            set{ id = value; }
        }
        public string Name
        {
            get{return name; }
            set{ name = value;}
        }
        /// 
        ///     ,      
        /// 
        public abstract void ShowInfo();
    }
    public class DriveClass : myClass   //     
    {
        /// 
        ///              
        /// 
        public override void ShowInfo()
        {
            Console.WriteLine($"  :{ID},  :{Name}");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();   //      
            myClass myclass = driveclass;               //             
            myclass.ID = "xs001";                      //                  
            myclass.Name = "  ";                        //                  
            myclass.ShowInfo();                         //                   
        }
    }