面向对象思想最重要的有五点,类,对象,还有面向对象的三大特征:继承,多态
类是具备某些共同特征实体的集合,是一种抽象的数据类型,是对具有相同特征实体的集合,包括事物的状态信息(成员变量)和行为信息(成员方法),用成员变量描述人的基本属性比如:身高,年龄,姓名等等,用成员方法描述人的行为特征:比如吃饭,睡觉等等。
对象就是真实世界的实体,实体与对象一一对应,也就是现实世界中的每一个实体都有一个对象,是一个具体的概念,类是泛指,对象是特指,虽然人都有身高,体重,年龄同时有腥味吃饭,睡觉等,但具体到某个人就不相同,比如老人和小孩年龄就不同等等
封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
访问限定符:
public:任意位置
protected:本类和子类中
private:本类
this代表对象,就是所在函数所属对象的引用,指向对象所占的内存空间。
继承
继承是使用已存在的类的定义作为基础建立新类的技术,新类的的定义可以增加数据或者功能,也可以用父类的功能,但不能选择性的继承父类。
继承描述的是“is-a”的关系,如果有两个对象A和B,则可以描述为“A是B”,也就是A继承B,其中B是被继承者称为父类或者基类,A是继承者称为子类或者派生类。
继承的特性:
1)子类拥有父类非private的属性和方法;
2)子类可以拥有自己的属性和方法,也就是子类可以对父类进行扩展;
3)子类可以用自己的方式实现父类的方法
多态:
1、“一个接口,多种方法”
同一种操作作用于不同的对象,会有不同那个的解释,也会产生不同的执行结果,运行时,可以通过指向基类的指针来调用实现派生类中的方法。
c++中实现多态的主要方法有:虚函数,抽象类,重载,覆盖,模板。
多态的三个条件:
a. 继承的存在(继承是多态的基础,没有继承就没有多态).
b. 子类重写父类的方法(多态下调用子类重写的方法).
c. 父类引用变量指向子类对象(子类到父类的类型转换).。
2、实现多态:
接口多态性。
继承多态性。
通过抽象类实现的多态性。
3、多态的主要作用:
比如建立一个父类的对象,它的内容可以是父类的也可以是子类的,当父类和子类拥有同样的函数时,当使用一个对象调用这个函数的时候,定义这个函数的类(也就是父类)里的同名函数将被调用,如果在父类里的这个函数前加上virtual关键字则子类的同名函数将被调用。
例如:
#include <iostream>
using namespace std;
class A
{
public :
A(){}
virtual void foo(){
cout<<"this is A"<<endl;
}
};
class B:public A
{
public:
B(){}
void foo(){
cout<<"this is B"<<endl;
}
};
int main()
{
A *a=new B();
a->foo();
if(a!=NULL)
delete a;
return 0;
}
运行结果显示:
this is B
去掉virtual之后运行结果为:
this is A