zoukankan      html  css  js  c++  java
  • 第45课 不同的继承方式

    被忽视的细节:

    问题:

    示例:

    可以看到其他两种继承方式也完全可以编译通过。

    这三种不同的继承有什么区别呢?

    不同的继承方式:

    深度实践:

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 class Parent
     7 {
     8 protected:
     9     int m_a;
    10 protected:
    11     int m_b;
    12 public:
    13     int m_c;
    14     
    15     void set(int a, int b, int c)
    16     {
    17         m_a = a;
    18         m_b = b;
    19         m_c = c;
    20     }
    21 };
    22 
    23 class Child_A : public Parent
    24 {
    25 public:
    26     void print()
    27     {
    28         cout << "m_a" << m_a << endl;
    29         cout << "m_b" << m_b << endl;
    30         cout << "m_c" << m_c << endl;
    31     }
    32 };
    33 
    34 class Child_B : protected Parent
    35 {
    36 public:
    37     void print()
    38     {
    39         cout << "m_a" << m_a << endl;
    40         cout << "m_b" << m_b << endl;
    41         cout << "m_c" << m_c << endl;
    42     }
    43 };
    44 
    45 class Child_C : private Parent
    46 {
    47 public:
    48     void print()
    49     {
    50         cout << "m_a" << m_a << endl;
    51         cout << "m_b" << m_b << endl;
    52         cout << "m_c" << m_c << endl;
    53     }
    54 };
    55 
    56 int main()
    57 {   
    58     Child_A a;
    59     Child_B b;
    60     Child_C c;
    61     
    62     a.m_c = 100;
    63     // b.m_c = 100;    // Child_B 保护继承自 Parent, 所以所有的 public 成员全部变成了 protected 成员, 因此外界无法访问
    64     // c.m_c = 100;    // Child_C 私有继承自 Parent, 所以所有的成员全部变成了 private 成员, 因此外界无法访问
    65     
    66     a.set(1, 1, 1);
    67     // b.set(2, 2, 2);
    68     // c.set(3, 3, 3);
    69     
    70     a.print();
    71     b.print();
    72     c.print();
    73     
    74     return 0;
    75 }

    遗憾的事实:

    JAVA、C#就只有一种继承方式--公有继承。

     小结:

  • 相关阅读:
    JAVA SE 基础复习-虚拟机
    不错的博客
    如何分析问题
    由Contains开始的
    相关有用链接
    C++语法一二
    关于论文的些许想法
    C++中一些容易迷惑的语法点总结
    android中各种组件的生命周期问题
    android开源框架thinkinandroid相关研究
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9574677.html
Copyright © 2011-2022 走看看