C++类与对象的理解(一)

一、类的概念

1.类是面向对象语言的程序设计中的概念,是面向对象编程的基础。
2.类的实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。
3.类是对现实生活中一类具有共同特征的事物的抽象。
4.类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。

其实通俗一点来理解,就是抽象出它属于那个体系,example1:狗(Dog)、猫(Cat)同属于动物,那我们就可以抽象出一个概念,抽象出"动物"这个概念,那么在类里面就可以声明一个类;

class Animal
{
    
    
//方法

//属性


};

对于类的属性和方法,其实理解也不难,就如同,猫、狗、同属于动物,那么继续抽象出其共性,猫、狗同为动物,都有名字,都有体重,年龄,性别,这些便都可以作为"动物类"的属性,因此我们便在代码中可以这么实现:

class Animal
{
    
    
public:
	//成员函数(方法,也可称为行为或者功能)
private:
	char m_Name[20];		//名字
	short m_Weight;			//体重
	short m_Age;			//年龄
	
};

而对于类的方法的理解,其实就是类的行为,亦可以理解为类能够执行的功能,这个功能你可以自己定义,当然,函数由自己定义,你大可以任意加功能。但是通常,我们在编程中,也是尽可能的去符合理念,正如,你不能抽象出动物不能实现的功能,即使你抽象出了动物无法实现的行为,那么这种行为是否在编程中能够获得大家的理解呢?亦或是抽象出的这种功能是否真的有意义呢。
既然是抽象出一个共性,那么我们通常抽象出都有的共性。至于类的用法及作用,我们后面再讲,这里呢,我仅仅是抽象了动物的部分方法并定义了方法逻辑,仅作为一个类的理解的案例。

#include<iostream>
using namespace std;
class Animal
{
    
    
public:
//抽象了一个移动方法
	void Move()
	{
    
    
		cout << m_Name << "移动了" << endl;
	}
//抽象了一个吃东西方法
	void Eat()
	{
    
    
		cout << m_Name << "吃东西了" << endl;
	}
//初始化Set函数,这里牵扯到了类的初始化,我们可以后续再细讲类的初始化
	void Set(char name[20], int weight, int age)
	{
    
    
		strcpy(m_Name,name);
		this->m_Weight = weight;
		this->m_Age = age;
	}
private:
	char m_Name[20];		//名字
	short m_Weight;			//体重
	short m_Age;			//年龄
	
};


二、对象的概念

此对象非彼对象,自己有没有对象,自己心里没数吗,好了,我们不打趣了,继续了解对象的概念。
概念:类是对一群有共同特征的事物或事件的集合,而类对象就是类的实例化。

在这里插入图片描述
这里的对象指的是具体的实例,所以我们通常会引入这么一句话,类的实例化对象,通俗来说,其实就是从上帝视角来创建了一个类,比如,我们已经创建了一个动物类,那么作为"上帝",光有个"动物"这个概念可不行,来点具体的东西,比如,猫,狗,大象等,对"动物"这个类,我们通过具体的事物,具体的例子,来实例化对象。

因为只有实例化类对象了,我们才能更好的去了解类的功能。类能做什么,类的作用是什么。这里我通过代码实例化了对象,猫,狗。
集中注意力听在这里插入图片描述

int main()
{
    
    
	Animal Dog;				//用Animal类实例化对象 Dog,也就表明了Dog拥有了类的相关属性及行为
	Dog.Set("Tom", 10, 1);	//用Set方法给Dog初始化,因为还没引入构造函数的概念,因此这里我仅用Set函数进行初始化
	Dog.Eat();				//Dog调用Eat()方法
	Dog.Move();				//Dog调用Mova()方法
	Animal Cat;				//用Animal类实例化对象 Cat,也就表明了Cat拥有了类的相关属性及行为
	Cat.Set("Amy", 8, 1);	//用Set方法给Cat初始化,因为还没引入构造函数的概念,因此这里我仅用Set函数进行初始化
	Cat.Eat();				//Cat调用Eat()方法
	Cat.Move();				//Cat调用Mova()方法
	
	return 0;
}

运行结果:
在这里插入图片描述

三、类和对象的关系

类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性(属性)和相同行为(方法)的对象。

四、类和对象的区别

1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Animal(动物)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。

2,对象是类的一个具体。它是一个实实在在存在的东西。

3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。

4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。(也就是在代码中,人为的调用,去处理代码的逻辑时,因调用的顺序而变化)

作者:ProMer_Wang

链接:https://blog.csdn.net/qq_43801020/article/details/106879762

本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

猜你喜欢

转载自blog.csdn.net/qq_43801020/article/details/106879762
今日推荐