zoukankan      html  css  js  c++  java
  • 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多态的实现概述

  • 相关阅读:
    pro asp.net mvc5 7
    pro asp.net mvc5
    第九章 观察者模式 OBSERVER
    第八章 单件模式 singleton
    第二部分 职责型模式responsibility
    设计模式5 合成模式 COMPOSITE
    linux中xargs用法
    linux中du的用法
    linux中find的用法
    linux中grep注意
  • 原文地址:https://www.cnblogs.com/ZhiXing-Blogs/p/4958285.html
Copyright © 2011-2022 走看看