驚艷的繼承_14
阿新 • • 發佈:2017-10-10
之間 種類 成員訪問 public 關系 blog prot char ted
一。繼承的概念
面向對象中的繼承指類之間的父子關系
1.子類擁有父類的所有成員變量和成員函數
2.子類就是一種特殊的父類
3.子類可以當作父類對象使用
4.子類可以擁有父類所沒有的方法和屬性
二。繼承初體驗
1.子類繼承父類直接默認繼承private
2.類中的protected
a。protect成員可以在子類中被訪問,但不能在外界被訪問
b。protected成員的訪問權限介於public和private之間
#include <cstdlib> #include <iostream> using namespacestd; class Parent { protected: int a; public: Parent() { a= 1000; } void Print() { cout <<"a = "<< a << endl; } }; class Child : public Parent { protected: int b; public: void set(int a,int b) { this->a = a; this->b = b; } }; int main(int argc, char *argv[]) { Parent parent; Child child; child.set(1,2); parent.Print(); child.Print(); // child.a = 10000; cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS; }
三。繼承與訪問級別
類成員訪問級別設置的原則
1. 需要被外界訪問的成員直接設置位public
2.只能在當前類中訪問的成員設置為private
3.只能在當前類和子類中訪問的成員設置為protected
公式:繼承成員對外的訪問屬性
= Max{ 繼承方式,父類成員訪問級別}。
#include <cstdlib> #include <iostream> using namespace std; class A { private: int a; protected: int b; public: int c; A() { a = 0; b = 0; c = 0; } void set(int a, int b, int c) { this->a = a; this->b = b; this->c = c; } }; class B : public A { public: void print() { // cout<<"a = "<<a; cout<<"b = "<<b; cout<<"c = "<<endl; } }; class C : protected A { public: void print() { // cout<<"a = "<<a; cout<<"b = "<<b; cout<<"c = "<<endl; } }; class D : private A { public: void print() { // cout<<"a = "<<a; cout<<"b = "<<b; cout<<"c = "<<endl; } }; int main(int argc, char *argv[]) { A aa; B bb; C cc; D dd; aa.c = 100; bb.c = 100; // cc.c = 100; // dd.c = 100; aa.set(1, 2, 3); bb.set(10, 20, 30); // cc.set(40, 50, 60); // dd.set(70, 80, 90); bb.print(); cc.print(); dd.print(); cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS; }
五。小結
1.繼承是一種類之間的關系,子類是一種特殊的父類
2.子類通過繼承可以得到父類的所有成員
3.private 成員可以被子類繼承但不能被子類訪問
4.protected成員只能在當前類和子類中被訪問
5.不同的繼承方式可以改變繼承成員的訪問屬性
驚艷的繼承_14