首页 > 其他分享 >4、类和对象

4、类和对象

时间:2023-03-26 21:22:26浏览次数:28  
标签:cout 对象 int 私有 权限 class 属性

4、类和对象

 

C++面向对象的三大特性为: 封装、继承、多态。

C++认为万事万物都皆为对象,对象上有其属性和行为。

 

例如:

人可以作为对象,属性有姓名、年龄、身高、体重..., 行为有走、跑、跳、吃饭、唱歌...

车也可以作为对象,属性有轮胎、方向盘、车灯... , 行为有载人、放音乐、放空调....

 

具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类。

 

4.1 封装

4.1.1 封装的意义

将属性和行为作为一个整体,表现生活中的事物。

将属性和行为加以权限控制。

 

封装意义一:

在设计类的时候,属性和行为写在一起,表现事物。

 

【语法】 class 类别{访问权限:属性/行为}

示例1:设计一个圆类,求圆的周长

示例代码

#include <iostream>

 

using namespace std;

 

//圆周率

const double PI = 3.14;

 

class Circle

{

public:

//属性

int m_r;//半径

 

//行为

//获取圆的周长

double calculateZC()

{

return 2 * PI * m_r;

}

};

 

int main()

{

//通过圆类,创建圆的对象

//c1就是一个具体的圆

Circle c1;

c1.m_r = 10;//给圆对象的半径,进行赋值操作

 

cout << "圆的周长为:" << c1.calculateZC() << endl;

 

system("pause");

 

return 0;

}

 

示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。

#include <iostream>

#include <string>

using namespace std;

 

class Student

{

public:

//行为(方法)

//给学生姓名赋值

void setName(string name)

{

m_name = name;

}

 

//给学生学号赋值

void setID(int id)

{

m_id = id;

}

 

//输出学生姓名和ID

void showStudent()

{

cout << "name: " << m_name << "ID: " << m_id << endl;

}

 

 

//属性

string m_name;

int m_id;

 

 

};

 

int main()

{

Student stu;

stu.m_name = "张三";//也可以写成stu.m_name("张三")

stu.m_id = 123;//也可以写成stu.m_id(123)

stu.showStudent();

 

system("pause");

 

return 0;

}

 

 

封装意义二:

类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:

1、public公共权限

2、ptotected保护权限

3、private私有权限

示例:

#include <iostream>

#include <string>

using namespace std;

 

class Person

{

//姓名  公共权限

public:

string m_Name;

 

//汽车  保护权限

protected:

string m_Car;

 

//银行卡密码  私有权限

private:

int m_Password;

 

public:

void func()

{

m_Name = "张三";

m_Car = "拖拉机";

m_Password = 123456;

}

 

void showPerson()

{

cout << "姓名:" << m_Name << endl;

cout << "车:" << m_Car << endl;

cout << "密码:" << m_Password <<endl;

}

};

 

int main()

{

Person p;

p.func();

p.m_Name = "李四";

//p.m_Car = "奔驰";//保护权限类外访问不到

//p.m_Password = 123;//私有权限类外访问不到

p.showPerson();

 

system("pause");

 

return 0;

}

 

4.1.2 struct和class区别

在C++中struct和class唯一的区别就在于默认的访问权限不同

区别:

struct默认权限为公共

class默认权限为私有

#include <iostream>

#include <string>

using namespace std;

 

class C1

{

int m_A;//默认权限是私有权限

};

 

struct C2

{

int m_A;//默认权限是公共权限

};

 

int main()

{

C1 c1;

c1.m_A = 10;//错误,访问权限是私有的

 

C2 c2;

c2.m_A = 10;//正确,访问权限是公共

 

system("pause");

 

return 0;

}

 

4.1.3 成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限。

优点2:对于写权限,我们可以检测数据的有效性

#include <iostream>

#include <string>

using namespace std;

 

class Person

{

 

public:

//姓名设置可读可写

void setName(string name)

{

m_Name = name;

}

string getName()

{

return m_Name;

}

 

//获取年龄

int getAge()

{

return m_Age;

}

//设置年龄

void setAge(int age)

{

if (age < 0 || age > 150)

{

cout << "你个老妖精" << endl;

return;

}

m_Age = age;

}

 

//爱人设置为只写

void setLover(string lover)

{

m_Lover = lover;

}

private:

string m_Name;//可读可写 姓名

 

int m_Age;//只读年龄

 

string m_Lover;//只读爱人

};

 

int main()

{

Person p;

//姓名设置

p.setName("张三");

cout << "姓名:" << p.getName() << endl;

 

//年龄设置

p.setAge(50);

cout << "年龄:" << p.getAge() << endl;

 

//情人设置

p.setLover("C++");

//cout << "爱人:" << p.m_Lover << endl;//只写属性,不可以读取

 

 

 

system("pause");

 

return 0;

}

 

练习案例1:设计立方体类

设计立方体类(Cube)

求出立方体的面积和体积

分别用全局函数和成员函数判断两个立方体是否相等。

 

练习案例2:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。

4、类和对象

 

C++面向对象的三大特性为: 封装、继承、多态。

C++认为万事万物都皆为对象,对象上有其属性和行为。

 

例如:

人可以作为对象,属性有姓名、年龄、身高、体重..., 行为有走、跑、跳、吃饭、唱歌...

车也可以作为对象,属性有轮胎、方向盘、车灯... , 行为有载人、放音乐、放空调....

 

具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类。

 

4.1 封装

4.1.1 封装的意义

将属性和行为作为一个整体,表现生活中的事物。

将属性和行为加以权限控制。

 

封装意义一:

在设计类的时候,属性和行为写在一起,表现事物。

 

【语法】 class 类别{访问权限:属性/行为}

示例1:设计一个圆类,求圆的周长

示例代码

 

示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。

 

 

封装意义二:

类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:

1、public公共权限

2、ptotected保护权限

3、private私有权限

示例:

 

4.1.2 struct和class区别

在C++中struct和class唯一的区别就在于默认的访问权限不同

区别:

struct默认权限为公共

class默认权限为私有

 

4.1.3 成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限。

优点2:对于写权限,我们可以检测数据的有效性

 

练习案例1:设计立方体类

设计立方体类(Cube)

求出立方体的面积和体积

分别用全局函数和成员函数判断两个立方体是否相等。

 

练习案例2:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。

标签:cout,对象,int,私有,权限,class,属性
From: https://www.cnblogs.com/hhkhhx/p/17259581.html

相关文章

  • 面向对象基础
    面向对象概念      面向对象是一种方法论对象和实例     对象  object          定义一个类就会得到一个类对象Object ......
  • 动态创建对象执行方法
    packageedu.wtbu;importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.refle......
  • java----对象的的创建和使用
    对象的的创建和使用创建一个学生类publicclassStudent{/*创建一个学生类*///下面是成员变量Stringname;//intage;intweight;//下......
  • 浏览器对象属性 window.innerWidth 和 window.outerWidth 这两个宽度属性有何区别?
    window.innerWidth和window.outerWidth是两个浏览器对象属性,分别代表浏览器窗口的内部宽度和外部宽度。它们的区别如下:window.innerWidth:表示浏览器窗口的内部宽度......
  • 在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
    在基于vue-next-admin 的Vue3+TypeScript前端项目中,可以整合自己的.NET后端,前端操作一些功能的时候,为了使用方便全局挂载的对象接口,以便能够快速处理一些特殊的操作,如......
  • Java面向对象基础部分学习记录
    static关键字:修饰变量。该变量成为类变量,该变量一般为所有类中所有成员共享,在该类中其他方法可以直接调用使用,在其它类中可以直接通过类名调用使用。修饰方法。该方......
  • Spring的 IOC 容器比New对象究竟好在哪?
    ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。资源集中管理,实现资源的可配置和易管理。降低了使用资源双方的......
  • 面向对象编程
    目录python中的两大编程思想面向过程面向对象两种编程思想的分析面向对象的推导步骤1:定义学生和选课功能步骤2:信息字典步骤3:数据与功能的绑定类与对象面向对象编程类的语......
  • js 数组与对象的区别
    js数组与对象的区别 学习javascript的时候,我曾经一度搞不清楚”数组”(array)和”对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。 比如有一个数......
  • 面向对象人狗大战
    attack_vals={'田园犬':30,'迪':80,}defdog(name,d_type):data={'name':name,'d_type':d_type,#'attack_val':30,'l......