C++复习之路十一——类的继承

一、复习三种访问控制符

public:修饰的成员变量或者方法,可以在类的外部或者类的内部使用

private:修饰的成员变量或者方法,只能在类的内部使用,外部不能使用

protected:修饰的成员变量或者方法,只能在类的内部或者子类内部使用,不能在类的外部使用

这三种访问控制符可以修饰类的成员属性,同时在继承的时候也能够修饰其继承的方式

二、类的继承

通过继承联系在一起的类构成一种层次关系,通常在层次关系的根部有一个基类,其他类则是直接或者间接地从基类继承过来。

我们先来看一个继承的例子

class A
{
public:
	int a;
private:
	int b;
protected:
	int c;
public:
	void print();
};
class B : public A 
{
public:
	void printB();
};

从上面的例子我们可以看到A类里面有三个成员变量a,b, c,分别是public, private, protected的,还有一个public的成员函数。B类继承A类的方式是public的。

通过一些继承方式我们就可以在派生类中访问基类中成员。但是并不是所有的继承方式都是可以访问的,是否能够访问是由基类的访问控制符和继承方式决定的

三、三种继承方式的区别

我先将他们三者的区别用一个表格表示出来


 

 

原有的访问属性

 

public

private

protected

public

public

private

protected

private

private

private

private

protected

protected

private

protected

1、通过public方式继承的,原有的访问属性保持不变

①如果原有的访问属性是public ,那么我们就可以在类的内部或者外部访问基类的public成员

②如果原有的访问属性是private,那么我们将不能访问基类的private成员

③如果原有的访问属性是protected,那么我们可以在派生类的内部访问基类的protected成员,但是不能在类的外部访问它。

2、通过private方式继承的,所有的属性都变成了private。

①如果原有的访问属性是public ,那么我们可以在派生类的内部访问,但是不能再派生类的外部访问基类的成员

②如果原有的访问属性是private, 那么我们将不能访问基类的private成员。

③如果原有的访问属性是protected,那么我们可以在派生类的内部访问基类的protected成员,但是不能在类的外部访问它。

3、通过protected方式继承的,原理来的public变成了protected,private和protected都保持不变

①如果原有的访问属性是public ,那么我们可以在派生类的内部访问基类的public成员,但是不能在类的外部访问它

②如果原有的访问属性是private,那么我们将不能访问基类的private成员。

③如果原有的访问属性是protected,那么我们可以在派生类的内部访问基类的protected成员,但是不能在类的外部访问它。

【注意】以上说的访问都是直接访问

如果有错误,大家可以在评论里指出来。


猜你喜欢

转载自blog.csdn.net/y____xiang/article/details/80068192