1. 程式人生 > 其它 >C#進階學習2--抽象方法(abstract)

C#進階學習2--抽象方法(abstract)

一.定義

抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象

定義關鍵字:abstract

重寫關鍵字:override

二.抽象類特點

1.抽象方法一定要寫在抽象類中,

2.抽象方法沒有方法體

3.抽象類可以包含非抽象的方法,如普通方法,虛方法等

4.繼承的子類如果沒實現父類中所有的抽象方法,那麼這個子類也必須是抽象類

5.抽象類不能例項化,且不能被密封(即不可使用sealed修飾),但仍然可以具有構造方法

三.抽象類與介面的異同

相同點

1.都可以被繼承

2. 都不能被例項化

3.都可以包含方法宣告

4.子類必須實現未實現的方法

不同點

1.抽象類只能單一繼承,介面可以實現多繼承

2.抽象類中可以有普通方法,虛方法等,介面只能寫規範,不可實現

3.抽象基類可以定義欄位、屬性、方法實現。介面只能定義屬性、索引器、事件、和方法宣告,不能包含欄位。

四.例項

    public abstract class Person
    {
        public string Name { get; set; }
        public int age { set; get; }
        public void SayHello()//普通方法
        {
            Console.WriteLine("我是" + this.Name + ",我的年齡是" + this.age);
        }
        public virtual int getAge()//虛方法
        {
            return this.age;
        }
        public abstract string getName();
    }

 public interface IAction
    {
        void Run();
        string Eat(string food);
    }

 public class Student : Person, IAction
    {
        public override string getName()
        {
            return "學生姓名為" + this.Name;
        }
        public string Eat(string food)
        {
            return "學生在吃" + food;
        }
        public void Run()
        {
            Console.WriteLine("學生在跑");
        }
    }