zoukankan      html  css  js  c++  java
  • 多态之虚方法、抽象类、接口

    虚方法:

    1、在父类方法的返回值前加 virtual 关键字,标记为虚方法,表示这个方法可以被子类重写。

    2、虚方法必须有方法体,方法体中可以没有任何内容。

    3、子类可以根据需求选择性的是否重写虚方法。如果需要重写,在子类方法的返回值前加 override 关键字。

    4、子类在重写虚方法时,可以根据需求选择性的是否使用 base 关键字调用父类中的该方法。

    虚方法语法格式如下:

     1 public class Father
     2 {
     3     public virtual void Do()
     4     {
     5         //.....
     6     }
     7 }
     8 public class Son : Father
     9 {
    10     public override void Do()
    11     {
    12         base.Do();//选择性的是否调用。
    13         //....代码体
    14     }
    15 }

    抽象类:

    1、在定义类的关键字 class 前面加 abstract 修饰,表示这个类为抽象类。子类继承抽象类后,使用 override 关键字重写父类中的所有抽象方法。

    2、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中。抽象方法也需要用 abstract 关键字进行修饰。

    3、抽象方法没有方法体,且抽象方法必须在子类中实现。

    4、抽象类不能被实例化,但是可以有构造函数。因为抽象类中有抽象方法(无方法体),如果实例化抽象类,那么抽象类的对象调用这些无方法体的抽象方法是没有任何意义的,所以无法实例化。

    抽象类以及抽象方法语法格式如下:

     1 public abstract class Father//抽象类
     2 {
     3     public abstract void Do();//抽象方法
     4 }
     5 public class Son : Father
     6 {
     7     public override void Do()
     8     {
     9         //...
    10     }
    11 }

    接口:当抽象类中的所有方法都是抽象方法时,可以用接口的形式来表现。

    1、接口使用 interface 关键字定义,没有 class 关键字,接口名一般使用“IXxxx”。

    2、接口中不能包含字段,但是可以包含属性(自动属性)。

    3、接口中定义的方法不能有方法体,全是抽象方法,但又不需要用 abstract 关键字修饰,因此接口不能被实例化,且不能有构造函数。

    4、接口中的成员不允许添加访问修饰符,默认都是 public。

    5、一个类可以实现多个接口,被实现的接口之间用逗号分隔开;一个接口也可以继承多个接口,接口之间也要用逗号分隔;当一个接口实现一个接口时,如果这两个接口中有相同的方法时,可以用 new 关键字隐藏父接口中的方法。

    6、继承者必须实现接口中的所有方法。

    接口语法格式如下:

     1 interface IFather
     2 {
     3     void Do();
     4 }
     5 
     6 interface IMother:IFather
     7 {
     8     new void Do();//隐藏父接口的同名方法
     9     void Do1();
    10 }
    11 
    12 public class Son : IFather,IMother
    13 {
    14     public void Do()
    15     {
    16        //...... 
    17     }
    18 
    19     public void Do1()
    20     {
    21         //.....
    22     }
    23 }
  • 相关阅读:
    Bluetooth architecture (HCI/L2CAP)
    堆栈
    Inside the C++ Object Model 深度探索对象模型 57
    Android音乐播放器
    (一)开发板系统安装
    html5的canvas写一个简单的画板程序
    C++ 获取日历时间
    Incremental Differential vs. Incremental Cumulative Backups
    BCB安装控件出现Unresolved external '__fastcall Outline::TCustomOutline
    Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  • 原文地址:https://www.cnblogs.com/xiaoyulong/p/7892655.html
Copyright © 2011-2022 走看看