C# 多态-继承多态

本文详细介绍了多态性在程序设计中的概念,特别是以C#为例,展示了如何通过继承和方法重写实现多态。通过代码示例,解释了在父类引用子类对象时,如何根据实际类型调用不同的方法,从而表现出子类特有的行为。总结了多态在设计模式和类继承关系中的广泛应用。
  1. 什么是多态?

       个人理解为:在程序语言继承关系中,子类能替代父类,表现出不同的行为。

        换句话说:在继承关系中,一个类被实例化被其子类替代,子类中有父类的虚方法重写,或者有父类同名方法(new),调用相同方法时候,
        将表现出子类或者父类中不同行为

  2. 老板,上代码
       
         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");
            }
         }
  3. 运行结果
  4. 总结
    不管类 、还是接口继承、抽象类继续 ,多态的这种行为使用非常广泛,设计模式中处处皆是

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值