神奇继承能衍生出哪些长尾词?

2026-04-11 21:242阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计956个文字,预计阅读时间需要4分钟。

神奇继承能衍生出哪些长尾词?

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、三种继承方式

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

1、public 公有继承

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

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

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

2、protected 保护继承

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

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

3、私有继承

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

神奇继承能衍生出哪些长尾词?

本文共计956个文字,预计阅读时间需要4分钟。

神奇继承能衍生出哪些长尾词?

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、三种继承方式

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

1、public 公有继承

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

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

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

2、protected 保护继承

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

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

3、私有继承

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

神奇继承能衍生出哪些长尾词?