当前位置 : 主页 > 编程语言 > c语言 >

神奇的继承

来源:互联网 收集:自由互联 发布时间:2023-09-07
1、什么是继承? 客观事物之间普遍存在层次分类关系。处于上层的事物较抽象,表达的是共性的特征;而处在下层的事物较为具体,除了共性特征外,还具有自身所专有的一些特征。


1、什么是继承?

客观事物之间普遍存在层次分类关系。处于上层的事物较抽象,表达的是共性的特征;而处在下层的事物较为具体,除了共性特征外,还具有自身所专有的一些特征。例如,人都有姓名、性别、出生日期等属性和工作生活等行为,这是共性的;个性方面,人按职业又可逐层分为很多类,在每一类中,除了具有上层的特征以外,还具有自己的特征。在面向对象编程思想中,采用继承的方法去刻画这种上下层关系。

2、继承的基本语法

class Person//先创建一个 Person类作为父类
{
public:
	int age;
	string name;
	void fun()
	{
		cout << "吃饭!" << endl;
	}
};
//创建doctor类做为子类,在继承Person类时方法如下:
class doctor :public Person
{
public:
	void fun()
	{
		cout <<age<<endl<<name<< "医生看病!" << endl;
	}
};
class teacher :public Person
{
	//age = 30;
	//name = "Tom";
public:
	void fun()
	{
		cout <<name<<endl<<age<<endl<< "教书育人!" << endl;
	}
};
void test01()
{
	doctor p1;
	teacher p2;
	p1.age = 40; p1.name = "Tom";
	p2.age = 30; p2.name = "Lisa";
	p1.fun();
	p2.fun();
}

虽然没有在子类中设置age和name的成员属性, 但是子类可以从父类中继承这些成员属性,就不需要再重新敲写一遍代码了。由此可见,通过继承的方式可以减少我们书写大量重复的代码。另外值得注意的是在继承的基本语法中,冒号“:”和父类名中间有一个访问权限符public。这正是三种继承方式之一。

神奇的继承_子类

3、三种继承方式

在父类中可能会有三种访问权限的成员,那么在使用不同的继承方式是会产生不同的效果。

神奇的继承_子类_02

1、public 公有继承

如图上图所示,公有继承时,子类不可访问父类中的私有成员,父类中的共有成员在子类中依然是公有成员,父类中的保护成员在子类中依然是保护成员。

神奇的继承_子类_03

很明显,编译器允许我们访问m_A和m_B,但并不允许我们访问私有成员m_C。

神奇的继承_子类_04

很明显,在类外编译器只允许我们访问m_A,说明m_A是公有成员,m_B是保护成员。

2、protected 保护继承

如上图所示,保护继承时,子类也不允许访问父类中的私有成员,父类中的公有成员和保护成员在子类中都是保护成员。

神奇的继承_子类_05

很明显,在类外当我们访问m_A时编译器会报错,总是m_A在父类中是公有成员,经过保护继承以后,公有成员在子类中就会变成保护成员。

3、私有继承

理解前两种继承方式,第三种就见文知意了。子类允许访问父类中的私有成员,父类中的所有成员,无论是哪种访问权限,子类私有继承之后,都会变成私有成员。

【转自:外国服务器 http://www.558idc.com/shsgf.html转载请说明出处】
上一篇:C语言函数大全-- m 开头的函数(1)
下一篇:没有了
网友评论