C#進階學習2--抽象方法(abstract)
阿新 • • 發佈:2021-06-29
一.定義
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象
定義關鍵字: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("學生在跑"); } }