標籤:
namespace ConsoleApplication2{ abstract class Fruit//抽象類別abstract關鍵字 { public abstract String Message { get; set; }//抽象屬性 public abstract void GrowInArea();//抽象方法不能有代碼實現,在函數名直接跟一個分號。 public void Say() { Console.WriteLine("我是水果,你是什嗎?"); } } class Apple : Fruit { public string _msg; public override string Message{ get { return _msg; } set { _msg=value; }} public override void GrowInArea() { Console.WriteLine(Message); Console.WriteLine("我是一個蘋果,南方北方都可以種植我"); } } class Pineapple : Fruit { public string _message; public override string Message { get { return _message; } set { _message = value; } } public override void GrowInArea() { Console.WriteLine("我是一個菠蘿,只能在南方看到我"); } } //定義兩個介面 關鍵字interface //介面可以看成一種“純”的抽象類別,它的所有方法都是抽象方法。 public interface ISwim//不需要class { void Swim();//方法 } public interface IFood { void Cook(); } //定義一個抽象類別 public abstract class Bird { public abstract void Fly();//抽象方法 public void say()//不一定都是抽象的 { Console.WriteLine("這是一隻家鴨"); } } //繼承一個抽象類別,實現兩個介面 public class Duck : Bird, ISwim, IFood { //實現ISwim介面 public void Swim() { Console.WriteLine("鴨子會遊泳"); } //實現IFood介面 public void Cook() { Console.WriteLine("北京烤鴨"); } //實現抽象類別Bird中的抽象方法 public override void Fly() { Console.WriteLine("只有野鴨才會飛"); } }}
class Program { static void Main(string[] args) { Fruit f; f=new Apple(); f.Message = "Hello"; f.GrowInArea(); f = new Pineapple(); f.GrowInArea(); Duck d = new Duck(); d.Swim();//調用父類子類介面的任意公有方法 d.Cook(); d.say(); d.Fly(); Console.ReadLine(); } }
抽象類別與介面