zoukankan      html  css  js  c++  java
  • 更加 "深入" 理解多态

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

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

  • 相关阅读:
    spring定时器的cronexpression表达式
    Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
    ORA-12505, TNS:listener does not currently know of SID given in connect desc
    The Network Adapter could not establish the connection
    Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别
    大道至简、大智若愚—GO语言最佳详解实践
    rsync使用详解
    一次TIME_WAIT和CLOSE_WAIT故障和解决办法
    Go的CSP并发模型实现:M, P, G
    如何优雅打印nginx header和body
  • 原文地址:https://www.cnblogs.com/ruyan886621/p/6572726.html
Copyright © 2011-2022 走看看