C++类与类之间的关系(基类、派生类、3种继承方式继承)

一.类与类之间的关系

分为以下3种:

class A {
public:
	int a;
	void funcA() {
		cout << "funcA()" << endl;
	}
};
//1.类B拥有类A的成员变量,B has A,类B依赖于类A
class B {
public:
	void funcB() {
		cout << "funcB()" << endl;
	}
	A a;//定义A类变量
};
//2.类C的成员方法需要类A的形参,C use A;
class C
{
public:
	void funcC1(A *a) {//用到类A的形参
		cout << "funcC1()" << endl;
	}
	void funcC2() {
		cout << "funcC2()" << endl;
	}
};
//3.D继承于A
class D :public A
{
public:
	void funcD() {
		//继承A,可以调用类A中public中函数和变量
		//D继承于A,D is A,继承的耦合度非常高。
		cout << a << endl;
	}
};

二.继承

继承:基于可重用性方式,所设计。减少代码冗余,便于理解。
使用如下:

class Student1{
public:
	Student1(int id, string name) {
		this->id = id;
		this->name = name;
	}
	void printS() {
		cout << "id=" << id << ",name=" << name << endl;
	}
private:
	int id;
	string name;
};
//通过继承,创建一个新的学生类,增加score功能
class Student2 :public Student1//继承方法
{
public:
	Student2(int id, string name, int score) :Student1(id,name)//通过父类构造函数
	{
		this->score = score;
	}
	void printS() {
		Student1::printS();//调用父类中的方法
		cout << "score=" << this-> score << endl;
	}
private:
	int score;
};
int main() {
	Student2 st2(1, "shadiao", 688);
	st2.printS();
}

结果:
在这里插入图片描述

三.有关继承的名词定义(基类[父类]、派生类)

基类(父类)、派生类(子类)。
基类与父类分配的空间是分开的。

在这里插入图片描述

四.类的继承方式

权限public、protected、private在三种继承之后,权限发生变化。见下图:
在这里插入图片描述
公有继承
在这里插入图片描述
公有继承结论:

1. 在【public继承】,【类内部、外部可以】访问父类中【pubic变量】。
2. 在【public继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【public继承】,【类内部可以、类的外部不可用】访问父类中【protected变量】。

保护继承
在这里插入图片描述
保护继承总结:
1. 在【protected继承】,【类内部可以、外部不可以】访问父类中【pubic变量】。
2. 在【protected继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【protected继承】,【类内部可以、类的外部不可以】访问父类中【protected变量】。

私有继承
在这里插入图片描述
私有继承总结:
1. 在【private继承】,【类内部可以、外部不可以】访问父类中【pubic变量】。
2. 在【private继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【private继承】,【类内部可以、类的外部不可以】访问父类中【protected变量】。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值