- 什么是多态?
个人理解为:在程序语言继承关系中,子类能替代父类,表现出不同的行为。
换句话说:在继承关系中,一个类被实例化被其子类替代,子类中有父类的虚方法重写,或者有父类同名方法(new),调用相同方法时候,
将表现出子类或者父类中不同行为 - 老板,上代码
static void Main(string[] args) { Console.WriteLine("Hello World!"); //多态 子类能替代父类表现出不同的行为: 在继承关系中,一个类被实例化被其子类替代,子类中有父类的虚方法重写 //将表现出子类的方法的行为;子类若有没有其父类虚方法的重写,将表现出父类方法的行为。 { //按实例化及继承关系正常访问, Parent p = new Parent(); p.ParentMethod(); p.ParentMethod_virtual(); child c = new child(); c.ParentMethod(); c.ParentMethod_virtual(); c.ChildMethor(); } //子类替代父类 Parent pc = new child(); pc.ParentMethod();// 1、访问父类原ParentMethod方法,忽略子类的new出来的 pc.ParentMethod_virtual(); //2 、访问子类重写父类的虚方法;子类中未对父类虚方法的重写将访问父类的方法。 //pc.ChildMethor(); //无法访问子类独有公用方法 } public class Parent { public void ParentMethod() { Console.WriteLine("我是父方法 ParentMethod"); } public virtual void ParentMethod_virtual() { Console.WriteLine("我是父方法 ParentMethod_virtual"); } } public class child : Parent { public new void ParentMethod() { Console.WriteLine("我是子方法 new ParentMethod"); } public override void ParentMethod_virtual() { Console.WriteLine("我是子方法 override ParentMethod"); } public void ChildMethor() { Console.WriteLine("我是子方法 childMethor"); } }
- 运行结果
- 总结
不管类 、还是接口继承、抽象类继续 ,多态的这种行为使用非常广泛,设计模式中处处皆是