zoukankan      html  css  js  c++  java
  • 第52课 C++中的抽象类和接口

    什么是抽象类?

    问题:

    Shape类有必要存在吗?

    抽象类是面向对象中必须支持的。

     

     抽象类初探:

    编译结果如下:

     完善示例:

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 class Shape
     7 {
     8 public:
     9     virtual double area() = 0;
    10 };
    11 
    12 class Rect : public Shape
    13 {
    14     int ma;
    15     int mb;
    16 public:
    17     Rect(int a, int b)
    18     {
    19         ma = a;
    20         mb = b;
    21     }
    22     double area()
    23     {
    24         return ma * mb;
    25     }
    26 };
    27 
    28 class Circle : public Shape
    29 {
    30     int mr;
    31 public:
    32     Circle(int r)
    33     {
    34         mr = r;
    35     }
    36     double area()
    37     {
    38         return 3.14 * mr * mr;
    39     }
    40 };
    41 
    42 void area(Shape* p)
    43 {
    44     double r = p->area();
    45     
    46     cout << "r = " << r << endl;
    47 }
    48 
    49 int main()
    50 {
    51     Rect rect(1, 2);
    52     Circle circle(10);
    53     
    54     area(&rect);
    55     area(&circle);
    56     
    57     return 0;
    58 }

    纯虚函数要在子类中重写。

    运行结果:

    抽象类不能定义对象,但是抽象类可以定义指针。

    抽象类与纯虚函数:

    接口:

    C++中没有真正的接口,没有具体的语法支持,后续的语言C#、JAVA有接口。

     接口示例:

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 class Channel
     7 {
     8 public:
     9     virtual bool open() = 0;
    10     virtual void close() = 0;
    11     virtual bool send(char* buf, int len) = 0;
    12     virtual int receive(char* buf, int len) = 0;
    13 };
    14 
    15 int main()
    16 {
    17     return 0;
    18 }

    我们只定义了函数,这是一个接口。

    小结:

  • 相关阅读:
    C++ CheckListBox
    TreeView查获节点并选中节点
    创建文件自动重命名
    bat
    Edit显示行号
    FindStringExact
    Extended ComboBox添加图标
    C++ Combobox输入时自动完成
    C++ ComboBox基础
    C++ Code_combobox
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9581731.html
Copyright © 2011-2022 走看看