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.接口可以多重继承,即一个类可以继承一个或多个接口。 */