继承与多态

继承

一个类是另一个类的一种(a kind of)

// 人
class People
{
   
public:
	void eat(string foot)
	{
   
		cout << "eat:" << foot << endl;
	}

	void sleep()
	{
   
		cout << "sleep" << endl;
	}
private:
};

//学生
class Student:public People
{
   
public:
	void learn()
	{
   
		cout << "learn" << endl;
	}
private:
};

//对于Student来说,People 的每一个特征Student都要拥有,
//不仅是Student 如果现在需要一个teacher类,对于People 的特征也要拥有,
//这样我们可以将People定义为一个基类,所有拥有这些特征的都可以继承这个类,
//这样就减少了不必要的代码重复
int main()
{
   
	Student st;
	st.eat("红烧肉");
	return 0;
}

派生类中从基类中继承来的成员的访问限定

  • 派生类公有继承基类
基类 派生类 类外
public public 可访问
protected protected 不可访问
private 不可访问 不可访问
  • 派生类保护继承基类
基类 派生类 类外
public protected 不可访问
protected protected 不可访问
private 不可访问 不可访问
  • 派生类私有继承基类
基类 派生类 类外
public private 不可访问
protected private 不可访问
private 不可访问 不可访问

派生类怎么初始化从基类继承来的成员

class People
{
   
public:
	People(int m):ma(m){
    cout << "People()" << endl; }

	~People(){
    cout << " ~People()" << endl; }

	void eat(string foot) {
    cout << "eat:" << foot << endl; }

	void sleep() {
    cout << "sleep" << endl; }
private:
	int ma;
};


class Student:public People
{
   
public:
	//派生类必须通过调用基类的构造函数对基类的成员进行初始化
	//如果基类不存在默认的构造函数,则在派生类的初始化列表中进行初始化
	//如果基类存在默认的构造函数,如果不在初始化列表中初始化,
	//则默认调用基类的默认构造函数
	Student(int m):People(m)
	{
    cout << "Student()" << endl; }

	~Student(){
    cout << "~Student" << endl; }

	void learn() {
    cout << "learn" << endl; }
private
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值