c#面向对象之多态
新手第一次写博客,写的有点差劲,只为不至于把所学的东西忘记,大神请绕道。不喜勿喷。共勉之。
在这一望无垠的世界,自己只是无数粒尘埃中不起眼的那一颗,即便如何,诚可谓自始至终都慵懒的默默做着这泯然众人的尘埃,从未经历风沙的磨砺,从未试图发出自己耀眼的光芒,从未努力脱颖而出。故天将降大任于斯人也,所谓斯人,从来都不是自己,悲哉,哀哉。
言尽于此,这一席话是讲给自己的,望能勉之,励之。现在进入正题。面向对象无非封装,继承,多态,最总要的还是多态,但是封装和继承又是多态的基础。
我们就假装自己有封装和继承的基础好了,通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。而所谓的方法,父类需要定义为虚方法或者抽象方法,这样子类就可以重写这个方法,而在实例子类时就可以通过定义一个全局变量父类来实现对子类的实例。再调用方法就是当前实例的子类重写的方法了。
我们来举个例子好了,这样方便理解:
class Animal{
public string name;
public abstract void eat();
}
class bird:Animal{
public override void eat(){
console.write("我是一只鸟,我吃虫子。");
}
class line:Animal{
consol.write(“我是一只狮子,我吃肉。”);
}
然后在main方法里
Animal animal;
animal = new bird();
animal.eat();
ainmal = new line();
ainmal.eat();
输出的结果不言而喻。