2.类和对象

类和对象

什么是类和对象呢?

1、类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是 抽象 的,不能直接使用 特征 被称为 属性 行为 被称为 方法 类就相当于制造飞机时的图纸,是一个模板,是负责创建的

2、对象 对象 是 由类创建出来的一个 具体 存在,可以直接使用,由哪一个类创建出来的对象,就拥有在哪一个类中定义的: 属性 方法

对象就相当于图纸制造的飞机 在程序开发中,应该先有类,再有对象

这样说大家肯定难以理解,我们接着往下看。

代码中理解

 /*************************************************************************
         > File Name: test.cpp
         > Author:Xiao Yuheng
         > Mail:[email protected]
         > Created Time: Wed Oct 25 16:32:06 2023
  ************************************************************************/
 ​
 #include 
 ​
 using namespace std;
 ​
 // 定义一个A类
 class A{
 public:
     int __x;
     int __y;
     int __z;
 };
 ​
 int main() {
     // 定义一个a对象
     A a;
 ​
     return 0;
 }

在上面这段代码中, 我们先定义了一个class A类,然后我们又用A类,创建了一个a对象,这样大家可能就大概理解了什么是对象和类了,如果还是不理解请接着往下看。

int a;这段代码相信大家应该都能看懂吧,有没有发现和A a;这段代码很相识。

int a;这段代码中:int 是类型,a是变量; ​ 在A a;这段代码中,A是类,a是对象;

其实他们描述的意思是一样的,只不过我们现在定义了一个更加复杂数据类型,然后在用这个数据类型创建一个变量,也就是我们所说是对象,有没有发现这个和c语言中的struct的作用差不多呀,是滴,class就是struct的升级版本。在C++中我们将不在使用struct,转而使用class

成员属性和成员方法

我们现在大概了解了什么是类和对象之后,我们再来聊一聊类该怎么定义,以及怎么里面有哪些内容。

类的定义:

 /*************************************************************************
         > File Name: test.cpp
         > Author:Xiao Yuheng
         > Mail:[email protected]
         > Created Time: Wed Oct 25 16:32:06 2023
  ************************************************************************/
 ​
 #include 
 ​
 using namespace std;
 /*
 类定义的格式
 calss 类名 {
 ​
 }; 分号不要忘了
 */
 class A{
 ​
 };
 ​
 int main() {
     A a;
 ​
     return 0;
 }

类定义的格式就是class 类名 { } ;

可是类里面又有什么东西呢?

 
/*************************************************************************
         > File Name: test.cpp
         > Author:Xiao Yuheng
         > Mail:[email protected]
         > Created Time: Wed Oct 25 16:32:06 2023
  ************************************************************************/
 ​
 #include 
 ​
 using namespace std;
 ​
 class A{
     // 成员属性
     int __x;
     int __y;
     int __z;
 ​
     // 成员方法
     int getX() { return __x; }
     int getY() { return __y; }
     int getZ() { return __z; }
 };
 ​
 int main() {
     A a;
     return 0;
 }

类中大致分为两类:成员属性和成员方法,那什么是成员属性呢?什么是成员方法呢?

成员属性(Member Variables)是指属于类的变量,也称为类的数据成员或成员变量。在这段代码中,class A 包含了三个成员属性:

  1. __x:这是一个整型变量,用来存储类的一个特定数据。

  2. __y:同样也是一个整型变量,用来存储另一个特定数据。

  3. __z:同样是一个整型变量,用来存储另一个特定数据。

总的来说,成员属性是属于类的变量,用来存储类的特定数据,可以在类的方法中进行访问和操作。

成员方法(Member Methods)是类中定义的函数,也叫做类的成员函数或方法。它们用于执行特定的操作或任务。

在这个例子中,类 A 包含了三个成员方法:

  1. int getX() { return __x; }:这是一个成员方法,它返回一个整数值。它的作用是获取成员属性 __x 的值。

  2. int getY() { return __y; }:类似地,这也是一个成员方法,返回整数值。它的作用是获取成员属性 __y 的值。

  3. int getZ() { return __z; }:同样也是一个成员方法,返回整数值。它的作用是获取成员属性 __z 的值。

这些成员方法可以在类的内部访问和操作成员属性,或者在类的外部通过类的实例(对象)来调用。

总的来说,成员方法是属于类的函数,用于执行特定的操作或任务,可以访问类的成员属性并进行处理。

访问权限

C++中的类中因为安全性的考量,引进了一个新的东西叫做访问权限,什么是访问权限呢?

C++ 中的访问权限是指控制类的成员(属性和方法)对外部世界的可见性和访问级别。我们将在代码中为大家详细解释一下什么是访问权限。

 /*************************************************************************
         > File Name: test.cpp
         > Author:Xiao Yuheng
         > Mail:[email protected]
         > Created Time: Wed Oct 25 16:32:06 2023
  ************************************************************************/
 ​
 #include 
 ​
 using namespace std;
 ​
 class A{
 // 私有访问权限
 private:
     int __x;
     int __y;
     int __z;
 ​
 // 公共访问权限
 public:
     int getX() { return __x; }
     int getY() { return __y; }
     int getZ() { return __z; }
 };
 ​
 int main() {
     A a;
 ​
     return 0;
 }

在C++中有三中访问权限,分别为:公共访问权限(Public)私有访问权限(Private)受保护访问权限(Protected),下面我们将详细为大家将一下:公共访问权限(Public)私有访问权限(Private)这两种访问权限,至于第三种 受保护访问权限(Protected)访问权限我们将在后面讲解友元的时候为大家讲解,现在大家就先把这个当成 私有访问权限(Private)这个就可以。

私有访问权限(private)

__x__y__z 是私有成员变量。它们只能在类的内部使用,对于类的外部和派生类来说是不可见的。 ​ 也就是说我们是无法在外部直接访问的如下, 我们在主函数中加上如下一句话:

 int main() {
     A a;
     a.__x = 10;
     return 0;
 }

如果我们直接在主函数中直接访问a.__x的话,我们编译一下如下:

2.类和对象_第1张图片

直接报错,报错内容大概:__x的权限是私有的。那我们该如何访问呢?我们接着往下看:

公共访问权限(public)

getX(), getY(), getZ() 是公共成员函数,它们可以在类的外部被调用。 ​ getX() 返回 __x 的值,getY() 返回 __y 的值,getZ() 返回 __z 的值。

我们可以通过公共访问权限来进行访问,我们把主函数更改为如下这样:

 int main() {
     A a;
     cout << a.getX() << endl;
     cout << a.getY() << endl;
     cout << a.getZ() << endl;
     return 0;
 }

我们再次运行一下程序,得到如下结果:

2.类和对象_第2张图片

因为我们还没给成员属性初始化,所有输出出来的值为随机值。

总结: 也就是说我们对象直接调用 私有访问权限(private)里面的值和函数,但是可以调用 公共访问权限(Public)里面的值和函数。

你可能感兴趣的:(c++,c++)