继承和派生
新类拥有原有类的全部属性为继承!原有类产生新类的过程为派生。
原有类称为基类,产生的新类称为派生类。
http://www.dotcpp.com/course/cpp/200027.html
继承方式(派生权限)
公有继承
- 基类中的公有成员,在派生类中仍然为公有成员。无论派生类的成员函数还是成员对象都可以访问。
- 基类中的私有成员,无论在派生类的成员还是派生类对象都不可以访问。
- 基类中的保护成员,在派生类中仍然是保护类型,可以通过派生类的成员函数访问,但派生类对象不可以访问!
私有继承
- 基类中的公有和受保护类型,被派生类私有吸收后,都变为派生类的私有类型,即在类的成员函数里可以访问,不能在类外访问。
- 基类的私有成员,在派生类类内和类外都不可以访问。
保护继承
- 基类的公共成员和保护类型成员在派生类中为保护成员。
- 基类的私有成员在派生类中不能被直接访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<iostream> using namespace std;
class Student { private: int number; public: int Set(int number) { this->number=number; return 0; } int Show() { cout<<"he or she number:"<<number<<endl; } };
class Score:public Student { private: int score; public: int set_score(int score) { this->score=score; return 0; } int show_score() { cout<<"the score is :"<<score<<endl; return 0; } };
int main() { Score A; A.Set(17007101); A.Show(); A.set_score(99); A.show_score(); return 0; }
|
多继承
一个子类可以有多个父类,继承多个父类的特性
class <派生类名>:<继承方式><基类名1>,<继承方式><基类名2>,…{派生类类体}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include<iostream> using namespace std;
class Shape { public: void setWidth(int w) { width = w; } void setHight(int h) { height = h; } protected: int width; int height; };
class PaintCost { public: int GetCost(int area) { return area*70; } };
class Rectangle: public Shape,public PaintCost { public: int getArea() { return (width*height); } };
int main() { Rectangle Rect; int area;
Rect.setWidth(10); Rect.setHight(3);
area = Rect.getArea();
cout<<"Total area: "<<Rect.getArea()<<endl;
cout<<"Total paint cost: "<<Rect.GetCost(area)<<endl;
return 0;
}
|