类和对象 -----继承
来源:互联网 发布:伊特进销存软件 编辑:程序博客网 时间:2024/05/18 21:41
继承:基类(父类)派生类(子类)
以animal(动物)eatgrassanimal(食草动物)rabbit(兔子)举例
#include "stdafx.h"#include <iostream>
using namespace std;
class Animal //基类
{
public:
Animal(){ cout << "animal的默认构造函数" << endl; }
Animal(int age){ m_age = age; cout << "animal的定义构造函数"<< endl; }
int getAge(){ return m_age; }
void run(){ cout << "animal run" << endl; }
private:
int m_age;protected:
};
//继承的3中方法,public protected private 不管是哪一种继承,子类都包含了父类的所有的属性和方法
不同点在于子类对于父类的访问权限不同
{
public:
EatGrassAnimal(int age);
void eat(){ cout << "I am eat grass" << endl; }
int getAge(){ return m_age; }
private:
int m_age;
protected:
};
EatGrassAnimal::EatGrassAnimal(int age) :Animal(age) //构造函数初始化时 先执行初始化列表在执行函数体内部
{
m_age = 20; 派生类中初始化父类的数据成员,当然子类也可以继续添加,初始化自己的数据成员
}
class Rabbit : public EatGrassAnimal
{
public:
Rabbit(int age);
int getAge(){ return m_age; }
private:
int m_age;
protected:
};
Rabbit::Rabbit(int age) :EatGrassAnimal(age) 这个地方子类只能调用自己的父类的构造函数,不能越级调用animal类
{
m_age = 30;
}
int _tmain(int argc, _TCHAR* argv[])
{
Rabbit rabbit(2); rabbit类定义了一个对象,构造函数调用的顺序,先调用animal类,在调用eatgrassanimal 后调用rabbit类,析构函数调用的顺序与构造函数 相反
rabbit.run();rabbit.eat();
cout << rabbit.getAge() << endl; 3个类中同时有getage成员函数时,就近原则
cout << rabbit.Animal::getAge() << endl; 若想调用具体的某一个类中的成员函数时,前面加类名和类限定符
cout << rabbit.EatGrassAnimal::getAge() << endl;cout << rabbit.Rabbit::getAge() << endl;
system("pause");
return 0;
}
3中继承方式的区别:
如果不申明某种继承方式时,默认private继承
public: 父类中的public---->子类中的public protected->protected private 不可访问
protected public ->protected protected->protected private不可访问
父类的public变成子类的protected,外部无法访问
private public-> private protected->protected private不可访问
- 对象和类继承
- 类和对象 -----继承
- 类和对象:继承
- 类继承和对象组合
- javascript类对象和继承
- 类和对象与继承
- 类和对象、封装和继承
- 面向对象继承总结:拷贝继承、类式继承和原型继承
- 虚拟继承和多重继承中类对象的大小
- 类、抽象类、接口、继承和对象
- js中的类,对象和继承
- C++类和对象的继承
- 关于C++继承类和对象
- lua类对象创建继承和使用
- exercise 42 继承 包含 对象和类
- 类的继承和对象引用
- Python-28 类和对象:继承
- 原型对象和继承
- SSh整合
- JAVA设计模式之享元模式
- Android所有的颜色
- Matlab自带的分类学习工具箱(SVM、决策树、Knn等分类器)
- 修改CentOS下的网络接口名称
- 类和对象 -----继承
- React-navigation导航系统(3)-高级指南
- Jmeter编写自定义函数
- Android Arcgis入门(11)、Callout气泡的显示
- Git入门——分支的基本使用与'合并'、'多人协作'常遇到的问题
- 初入Fragment(1)——静态加载fragment
- 多tomcat服务器配置,明天做的e1
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- React-navigation导航系统(4)-Redux的整合实例