更加 "深入" 理解多态

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.里式替换原则:

子类对象可以代替父类对象;反过来,父类对象不能代替子类对象

原文地址:https://www.cnblogs.com/ruyan886621/p/6572726.html