继承和派生
新类拥有原有类的全部属性为继承!原有类产生新类的过程为派生。
原有类称为基类,产生的新类称为派生类。
http://www.dotcpp.com/course/cpp/200027.html
继承方式(派生权限)
- 公有继承
- 私有继承
- 保护继承
公有继承
- 基类中的公有成员,在派生类中仍然为公有成员。无论派生类的成员函数还是成员对象都可以访问。
- 基类中的私有成员,无论在派生类的成员还是派生类对象都不可以访问。
- 基类中的保护成员,在派生类中仍然是保护类型,可以通过派生类的成员函数访问,但派生类对象不可以访问!
私有继承
- 基类中的公有和受保护类型,被派生类私有吸收后,都变为派生类的私有类型,即在类的成员函数里可以访问,不能在类外访问。
- 基类的私有成员,在派生类类内和类外都不可以访问。
保护继承
- 基类的公共成员和保护类型成员在派生类中为保护成员。
- 基类的私有成员在派生类中不能被直接访问。
#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>,…{派生类类体}
#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;
}