static class Program { /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main() { IFactory i = new Children(); i.Voice(); i.Listen(); Factory f = new Children(); f.Voice(); f.Listen(); Console.ReadKey(); } } public interface IFactory { void Voice(); void Listen(); void Write(); } public abstract class Factory { public virtual void Voice() { Console.WriteLine("factory"); } public abstract void Listen(); public abstract void Write(); } public class Children : Factory,IFactory { //當繼承了具備相同方法的父類和接口時,默認子類繼承了父類的方法,即繼承時已實現了接口的同名定義方法。不須要再次實現接口該方法了。 //系統也會默認再也不提示實現。認定已實現。且若要從新實現,只能重寫父類的同名定義方法,或者new覆蓋該方法。不能以接口實現的方式實現 //該方法。由於方法已經經過父類實現。若父類同名定義的方法爲抽象方法,則必須重寫父類的方法。同理此時,也不用實現接口定義的方法,由於自父類繼承已存在該方法。 public override void Listen() { Console.WriteLine("listen"); } public override void Write() => Console.WriteLine("write"); //public override void Voice() //{ // base.Voice(); // Console.WriteLine("children"); //} //public void Voice() //{ // throw new NotImplementedException(); //} }
我的理解,不對請指正!ide
關注細節,關注容易忽略的,開發中以爲理所固然的,但其實只是只知其一;不知其二。spa