先建立一个狗的类(类:其实就是具有共同特征的事物的抽象)
- class Dog
- {
- private string name;
- public Dog(string name)
- {
- this.name = name;
- }
- public void 叫()
- {
- Console.WriteLine("旺旺");
- }
- }
复制代码
然后建一个猫的类
- class Cat
- {
- private string name;
- public Cat(string name)
- {
- this.name = name;
- }
- public void ()
- {
- Console.WriteLine("喵喵");
- }
- }
复制代码
比如后面再添加牛,马等等这些动物,我们发现这些有很多相似的地方,那么我们就把他们这些一样的行为都抽象起来,那么现在就是抽象类,和继承出场的时候了
- abstract class Animal//抽象类(动物)
- {
- private string name;
- public Animal(string name)
- {
- this.name = name;
- }
- public abstract void jiao(); //因为呢,动物都会叫所以写一个叫的抽象方法,这个呢,需要在派生类中实现
- }
-
- class Dog : Animal //继承Animal
- {
- public Dog(string name):base(name) //调用Animal构造函数
- {
-
- }
- public override void jiao() //重写派生类的叫的方法,实现自己的叫
- {
- Console.WriteLine("旺旺");
- }
- }
- class Cat : Animal //继承Animal
- {
-
- public Cat(string name):base(name)
- {
-
- }
- public override void jiao()
- {
- Console.WriteLine("喵喵");
- }
- }
复制代码
这样清晰多了,以后如果要添加,牛,马,羊,之类的都可以继承Animal这个抽象类,因为这些牛马羊都是动物,只有“is a”关系使用继承关系。
接下来我们发现像老鹰这些动物都会飞,但是呢牛马羊不会飞,我们就建立一个飞的接口
- abstract class Animal
- {
- private string name;
- public Animal(string name)
- {
- this.name = name;
- }
- public abstract void jiao();
- }
- interface IFly
- {
- void Fly();
- }
- class Dog : Animal
- {
- public Dog(string name):base(name)
- {
-
- }
- public override void jiao()
- {
- Console.WriteLine("旺旺");
- }
- }
- class Cat : Animal
- {
-
- public Cat(string name):base(name)
- {
-
- }
- public override void jiao()
- {
- Console.WriteLine("喵喵");
- }
- }
- class Laoying : Animal,IFly
- {
- public Laoying(string name)
- : base(name)
- {
-
- }
- public override void jiao()
- {
- Console.WriteLine("老鹰叫");
- }
- public void Fly() //实现接口
- {
- Console.WriteLine("老鹰在天空中高高的飞翔");
- }
- }
复制代码
如果还要添加什么超人啊,飞机啊,都可以继承IFly的接口,去实现Fly()的方法。
接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,不用去管是怎么实现的,具体的实现让继承这个接口的类去实现。比如上边代码,我们定义了一个飞的接口,让继承它的类去实现这个飞的方法,比如这里老鹰,老鹰会飞,那么继承这个接口以后,实现自己是怎么飞的,再比如我玄幻一点,孙悟空,他也会飞,那么他继承这个接口以后,去实现,一个跟头十万八千里,哈哈,是不是很容易理解。
虚方法例子:
简单举个例子,比如说从前有个唱戏的,这个人叫A,A很受欢迎,每次都有很多人来光顾,但是现在他病了,不能唱了,但是呢他有个儿子B,从小受父亲的影响,模仿父亲很像,唱的也很好,这时候B上台去唱了,但是B用自己的方式去唱。最后这场戏很圆满的结束了。
- class Fuqin
- {
- public virtual void Chang()
- {
- Console.WriteLine("我是父亲,我用我的方式去唱");
- }
- }
- class Erzi : Fuqin
- {
- public override void Chang()
- {
- Console.WriteLine("我是儿子,我用我的方式去唱");
- }
- }
复制代码
就这样简单接收下虚方法。 |