多态是什么?
多态就是对象可以表现多个类型的能力。
问题1
当我们在写代码的时候,如果子类和父类如果有相同的方法名,但会出现一条绿线。
解决方法:1、可以在子类方法的修饰符后面加new。2、以可在父类的方法的修饰符后面加virtual(称为虚方法)
用virtual修饰的方法称为虚方法,虚方法可以在子类中通过override关键字重写。常见的虚方法:ToString()Equals
然后在子类中重写父类的方法,加override,调用父类的方法,但是把父类的方法进行重写了,更换了方法里面的内容(称为重写)
什么是重写?
不同对象对于同一个方法调用的不同行为(指不同对象收到相同消息时,会产生不同行为)。
虚方法与重写
1、方法不能用static修饰 2、方法重写与基类的签名必须一致 3、virtual不能与private一起使用
抽象方法
抽象方法是用abstract修饰,抽象方法没有方法体,抽象方法必须在抽象类中,抽象类无法实例化。父类是抽象类,子类继承了这个抽象类,必须把抽象类中的抽象方法重写。
虚方法和抽象类比较
多态总结:
建立多态的方式:覅类实现多态、抽象类实现多态、接口实现多态
版本控制:保留基类方法使用new关键字、需要重写方法时使用override
类与成员的修饰符:
类:public、internal、abstract、sealed、static
成员(方法):public、private、protected、internal
protected internal
abstract、virtual、new、override
static
以上是我对多态的认识,如果有不足的地方,欢迎给位大佬指正!