using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace test0322 { public abstract class TestAbstract//抽象方法只能在抽象类中定义;虚方法则不是 { public abstract void Run(); //public abstract void Run1() { }//报错,抽象方法不能有实现 public abstract int I1 { get; }//abstract可以用来修饰类,方法,属性,索引器 public abstract string this[int index] { get; set; } } public class TestVirtual//抽象方法只能在抽象类中定义;虚方法则不是 { // public abstract void Run();//报错,因抽象方法只能在抽象类中定义。 // public virtual void Run1();//报错,虚方法必需要有实现 public virtual void Run2() { }//虚方法必需要有实现 public virtual void Run3() { }//虚方法必需要有实现,不必需在子类重写. public virtual int I1 { get; }//virtual可以用来修饰类,方法,属性,索引器 public virtual string this[int index] { get => ""; set => value = ""; } } public class abs : TestAbstract { public override string this[int index] { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public override int I1 => throw new NotImplementedException(); public override void Run()//抽象方法必需再子类重写. { throw new NotImplementedException(); } } public class vir : TestVirtual { public override void Run2()//虚方法不必需在子类重写. { throw new NotImplementedException(); } } public class test { //TestAbstract testAbstract = new TestAbstract();//抽象父类不能实例 TestAbstract testAbstract1 = new abs(); TestVirtual testVirtual = new TestVirtual(); TestVirtual testVirtual1 = new vir(); } }
标签:C#,void,abstract,抽象,virtual,new,方法,public From: https://www.cnblogs.com/hiyanhao/p/18095844