• Csharp多态的实现(抽象类)


    1.什么是抽象类

    抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写

    抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的)

    非抽象类中只能存放非抽象的方法(这个可以在下面的代码中可以看出类)

    如果子类也是抽象类,那么父类中所有的抽象方法,属性不必全部实现; 如果子类不是抽象类,那么父类中所有的抽象方法,属性必须全部实现(如果不实现会报错,这个也可以观察出来)

    2.下面来看一下代码的实现,来点干的

    //先定义一个Car父类
    abstract class  Car
        {
            private string _name;//用private修饰的,只能在父类中使用
            public  string name//可以再子类中继承使用
            {
                get
                {
                    return _name; 
                }
                set
                {
                    _name = value;
                }
            }
            public abstract void say();//抽象方法,必须在子类中重写
            public  void start()//可以再子类中继承使用
            {
                Console.WriteLine("我是一辆车,我现在启动了");
            }
          }
    
    //定义一个Benz类,继承Car
      class Benz:Car
        {
            public override  void say()//在子类中重写
            {
                Console.WriteLine("我是大奔,我叫{0}",name);
            }   
        }
    
    //定义一个BMW类,继承Car
     class BMW:Car
        {
            public override void say()//在子类中重写
            {
                Console.WriteLine("我是宝马,我叫{0}",name);
            }
        }

    3.如果使用多态   

    定义一个父类的变量 Car b = new Benz();
    b = new BMW();

    先装的是奔驰类,后来装的是宝马类,装那个类,表现出那个类的特征,这就是多态

    3.1  一个父类可以装不同的子类,从而实现不同的形态

    3.2  当一个父类被多个类继承的时候,子类中的方法很多,而父类中的方法无法确定的时候,在父类定义个抽象方法,然后在子类中实现就可以了,在使用多态的时候,也可以直接使用

    Csharp多态的实现概述

  • 相关阅读:
    每日日报
    每日日报
    每日日报
    线上问题定位---jstack
    8.18Java入门--->第二十二节(ObjectOutputStream、ObjectInputStream)
    8.17Java入门--->第二十一节(IO流)
    Mybatis--->第六节一对多和多对一
    8.14Java入门--->第二十节
    8.13Java入门--->第十九节(Map嵌套)
    Java学习
  • 原文地址:https://www.cnblogs.com/ZhiXing-Blogs/p/4958285.html
Copyright © 2020-2023  润新知