C++基础:类与对象的简介与定义!
从今天开始我们将与你一起学习面向对象的程序设计,语言方面我们选择的C++。如果说C语言的灵魂是指针的话,那么C++的灵魂则是抽象。在面向过程的程序设计中我们常常说:
程序 = 数据结构 + 算法
而在面向对象的程序设计中则说:
程序 = 抽象 + 设计模式
而在这个系列中我们将一起从零学起面向对象的程序设计思想,逐步用C++实现来实现面向对象的程序。最后我们将进入设计模式系列,了解并掌握每一个精典的设计有什么优点,适用于什么场景,能够为我们解决哪一类问题。
现在我们先来简单介绍一下什么叫作程序设计中的抽象。所谓的抽象就表示这是一类事物的统称,这类事物有着一些共性,而每一个个体可能都有着特性。举例来说,比如我们提到公共汽车,就可以将其抽象成一个类bus。而对于任何一种公交车都具有同一种功能:载客。实际上属于bus类的实物有很多,比如不同载客数量的公交车,不同线路的公交车,不同牌子的公交车等等。我们称某一个类下的实际事物为类的对象。对于公交类bus它有两个属性:载客数和路线,它们叫做这个类的成员变量,因为所有的公交车都具有这两个属性,并且它们的数值可能不同,也就是变化的。而bus类还有两个功能:按线路行驶和到站停车,这两个动作称为类的成员方法。对于所有公交车都具有这两个功能。
而对于这一个bus类来说我们并不能直接对其操作,因为这只是一个用于描述事物特性的一个抽象,而不是实际事物。想要使用bus类我们就必需为这个类定义其实际的对象,例如:
Bus bus2;
Bus bus18;
这样就为bus类定义了两个对象,分别是2路公交车和18路公交车。在这个为类定义实际对象的过程称做类的实例化,类的对象又称为类的实例。
有了类的对象我们就可以使用对象来使用这个类中的成员变量和成员方法。例如:
bus2.run();
bus18.run();
所以我们说类与对象是相互依赖,它们不能独立存在,只讨论类或只讨论对象是没有意义的。类与对象是C++与C有最大区别的地方,我们在使用C++编写程序时,需要时刻提醒自己需要使用面向对象的程序设计相思来编程。我们先来看看类的定义:
class 类名
{
范围修饰符:
成员变量
成员方法
};
我们来对上面代码做一下说明:
class为C++的一个关键字,表示声明一个类,其后需要指明这个类的名字。
接下来是一对大括号,用于表示这个类的内容,注意,这对大括号不能省略。另外,大括号后需要有一个分号,用于表示这个类的内容结束。
类内部可以定义成员的范围修饰符:
public: 公有成员,可以在类的内部和外部访问,可以被继承。
protected: 保护成员,只能在类的内部访问,可以被继承。
private: 私有成员,只能在类的内部访问,不能被继承。
在在本节中,我们不介绍类成员的访问范围的继承机制,这些内容我们会在后续章节中学习,在本节中我们定义的类成员都是public公有成员,被public关键字修饰的成员在访问和继承中没有过多的限制。下面我们来举一个实际例子,例如我们定义一公交车类:
class Bus
{
public:
int count;
void run()
{
cout << "running." << endl;
}
};
其中我们定义了公交车BUS类的两个成员:载客数和运行。载客数是它的成员变量,运行是它的成员方法。
我们在前面提到过类与对象不可能单独存在,定义了类之后就是指定了这样的一种抽象结构,其本身并不能直接使用,我们需要定义这个类的对象,通过对象来执行其内部的成员,例如:
Bus bus2;
Bus bus18;
bus2.cout = 50;
bus18.cout = 60;
bus2.run();
bus18.run();
这样,我们就定义了bus类的两个对象,一个是2路公交车另一个是18路公交车。这两个对象同属于bus类,所以它们都具有载客数count和运行run()这两个成员。所以。当执行上面程序时,并不是执行类,而是执行对象。用直白一些的话来说,就是我们不能说公交的的载客数是多少,而必需指定确定的某一量公交车后18路车,才能说这一量公交车载客数是60人。
上面程序运行结果如下:
50
60
也就是说类定义了整个数据的内容和结构,而真正执行的是类的实例化对象。
“我是一名从事了10年的老程序员,最近我花了一个月整理了一份最适合2020年学习的c/c++项目实战以及基础教程干货,送给每一位编程小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习,技术大牛、学习资料助你早日成为一名优秀的程序员,想要学习更多知识可以关注我哦!
官方企鹅群:720168573