(最近带一个新手入门 讲这边老费力了。)接口和抽象类不过都是类的抽象罢了,这是他们的本质,只不过人们的思维角度不同而已,一个偏向为行为契约上的抽象(接口) 一个更像大自然中的繁衍关系(抽象类)。直接上代码:class 抽象类 { public static void Ma ...
(最近带一个新手入门 讲这边老费力了。)
接口和抽象类不过都是类的抽象罢了,这是他们的本质,只不过人们的思维角度不同而已,一个偏向为行为契约上的抽象(接口) 一个更像大自然中的繁衍关系(抽象类)。
直接上代码:
class 抽象类 { public static void Main(get='_blank'>string[] args) { ChinesePerson c = new ChinesePerson("xx", 23); c.Run(); c.Speak(); Console.WriteLine(c.Name); Console.WriteLine(c.Age); Console.WriteLine(c.Hobby); Console.WriteLine("--------"); c.fight(); JiangSuPerson j = new JiangSuPerson(); j.Name = "xiaomao"; j.Age = 24; j.Run(); j.Speak(); j.fight(); j.sing(); Console.WriteLine(j.Name); Console.WriteLine(j.Age); Console.WriteLine(j.Hobby); Console.WriteLine("----------"); HenanPerson h = new HenanPerson(); h.Name = "linyi"; h.Speak(); h.fight(); h.sing(); Console.ReadKey(); } } public interface IRun { void Run(); } public abstract class Person : IRun { private string name; private int age; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public abstract string Hobby { get; set; } public Person(string name, int age) { this.Name = name; this.Age = age; } public Person() { } public abstract void Speak(); public void Run() { Console.WriteLine("Running ~~"); } //能够被子类重写的 只有 abstract 或virtual修饰的, //不同在于,abstract一定要被重写,而virtual则是可以被重写 但不一定非要重写,还有就是virtual要有方法体。 public virtual void fight() { Console.WriteLine("fighting"); } } public class ChinesePerson : Person { public ChinesePerson(string name, int age) : base(name, age) { this.Name = name; this.Age = age; } public ChinesePerson() { } public override void Speak() { Console.WriteLine("中国人说中文"); } public override string Hobby { get { return "shopping"; } set { } } public override void fight() { base.fight(); Console.WriteLine("chinese gongfu fighting"); } public virtual void sing() { Console.WriteLine("用中文唱歌"); } } //继承自中国人,但是没有任何重写 public class JiangSuPerson : ChinesePerson { } public class HenanPerson : ChinesePerson { public override void Speak() { Console.WriteLine("河南人说河南方言"); } public override void sing() { Console.WriteLine("用河南话唱歌"); } }
原标题:不要在对抽象类接口abstract virtual什么的混淆不清了
关键词:接口
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。