深入理解多态 (1)
1.
1 public abstract class Birds{ 2 3 //什么样的方法是抽象方法 4 5 public abstract void Fly(); 6 7 8 }
public class YZ:Birds{ public override void Fly(){ Console.WriteLine("........."); } }
2.来解释抽象方法是怎样的
①如果一个类中用abstract修饰,该类是抽象类
②抽象类中可以有非抽象类方法
③抽象方法不能有方法体,连{}都能有,以分号结束
④如果一个类继承抽象类,必需重写抽象类中的所有抽象方法
⑤抽象方法必须位于抽象类中
⑥抽象类不能是静态类或者是封装类
⑦抽象类不能实例化
3.用虚方法实现多态的基本步骤如下:
①子类重写父类的虚方法,其中有两种方式.
创建父类对象,用子类对象实例化这个父类对象,
把父类类型作为形参类型,它的子类对象作为实参传入
②运行时,根据实际创建对象的类型决定执行哪个方法
4.虚方法和抽象方法的区别
_ ______________________________|___________________________
虚方法 | 抽象方法
_______________________________ |____________________________
用virtual修饰 | 用abstract修饰
_______________________________ |______________________________
要有方法体,即使是一个分号 | 不允许有方法体
_______________________________ |______________________________
可以被子类override | 必须被子类override
_______________________________ | ________________________________
除了密封类外都可以被定义 | 只有在抽象类中定义
_______________________________ |________________________________
注:使用抽象方法和虚方法都可以实现多态性
5.面向对象编程中三个非常重要的特性---------封装,继承,多态
最后总结:
①封装:保证对象自身数据的完整性和安全性
②继承:建立类之间的关系,实现代码复用,方便系统的扩展
③多态:相同方法的调用可实现不同的实现方式
6.里式替换原则:
子类对象可以代替父类对象;反过来,父类对象不能代替子类对象