进军C++世界
初始oop
类和对象是面向对象中的两个基本概念
类指的是一类事物,是一个抽象的概念
对象指的是属于某个类的一个实体,是一个具体存在的事物
类是一种模板,可以通过这种模板创建出不同的对象实例
对象实例是类模板的一个具体实现
一个类可以有很多对象,而一个对象必然属于某个类
抽象
抽象的意义是观察一群事物,并认识它们所具有的一些共同特征
抽象的本质是忽略不重要的区别,只记录能表现事物特征的关键数据项
类是抽象在程序设计领域的概念
类用于抽象的描述一类事物所特有的属性和行为
对象是一个具体的事物,拥有其所属类的所有属性并且每个属性都是一个特有的值
封装
类中描述的事物属性和行为往往是相关的
在C++中属性通过变量来表示,行为通过函数来模拟
封装指的是类中的变量只能通过类的函数来访问
C++中第一个类的演示
#include <stdio.h> struct Student { const char* name; int number; void info() //C语言中编译不通过,C++扩充了struct { printf("Name = %s, Number = %d\n", name, number); } }; int main() { Student s; s.name = "Delphi"; s.number = 100; s.info(); return 0; } //g++ test.cpp
思考如何将name和number的访问权限限制到类的函数中
C++中类的3种访问权限:
#include <stdio.h> struct Student { protected: const char* name; int number; public: void set(const char* n, int i) { name = n; number = i; } void info() { printf("Name = %s, Number = %d\n", name, number); } }; int main() { Student s; //s.number=10; //error!main函数不可见 s.set("Delphi", 100); s.info(); return 0; }
强大的继承
在C++中虽然扩充了struct成为了类,但是一般情况下还是遵循C中的用法
C++一般情况用class来做类的关键字声明
继承是C++代码复用的方式,通过继承,在子类中可以使用父类中的代码
子类可以完全继承父类中的所有变量和函数,在可以使用父类的地方就可以用子类代替
子类从概念而言是一种特殊的父类
小结
面向对象是一种新型的软件开发思想
面向对象将生活中的事物完全映射到程序中
抽象,封装和继承是面向对象程序设计的重要3大特征
继承能够很好的复用已有的类的特性
子类是一种特殊化的父类