C#多态

//////"abstract"声明为抽象类
1.抽象类不能直接实例化
2.不能用sealed修饰符修改抽象类,因为抽象类是用来继承的,而sealed关键字是使类不能作为基类被继承

//////"abstract"声明为抽象方法
public abstract void show();     //因为抽象方法没有主体,只有定义,必须在子类中实现抽象方法
//父类中定义的抽象方法在子类中必须重写,关键字"override"



/*
多态:不同对象对同一方法作出不同的实现
*/
//实现方法:
1.传统实例化并调用多态的方法
2.利用抽象类实例化一个对象如:
    /*public abstract animal
      public abstract void show(){}
    */
    animal dog=new dog();
    dog.show();
    animal pig=new pig();
    pig.show();
    
    
//////"interface"关键字,接口
接口不能包含字段,属性,只能对方法的定义
//特殊的抽象方法(没有"abstract"关键字,子类实现该方法不需要加上"override"关键字)
public void change(double d);


子类中实现:
显式实现:那么在实现的方法或属性前就会加上所属接口的名称
/*
基类IBank
子类Card
*/
class Card:IBank
    {
        double IBank.Money
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        void IBank.change(double d)
        {
            throw new NotImplementedException();
        }
    }
隐式实现:
class Card:IBank
    {
        public double Money
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public void change(double d)
        {
            throw new NotImplementedException();
        }
    }
    
    
    
/*
抽象类和接口的区别:
1.抽象类有字段,属性和方法,接口没有字段和属性,只有方法。
2.抽象类只能被单一继承,即一个类只能继承一个抽象类。
3.接口可以多重继承,即一个类可以继承一个或多个接口。
*/
原文地址:https://www.cnblogs.com/god-for-speed/p/11445062.html