网站建设教程 mysql,商城网站哪个公司做的好,网站做ulr跳转,网站建设中存在的问题本篇文章主要说明了类与对象中封装的有关知识#xff0c;包括属性和行为作为整体、访问权限、class与struct的区别、成员属性的私有化#xff0c;希望这篇文章可以帮助你更好的了解类与对象这方面的知识。 文章目录 一、属性和行为作为整体二、访问权限三、class与struct的区… 本篇文章主要说明了类与对象中封装的有关知识包括属性和行为作为整体、访问权限、class与struct的区别、成员属性的私有化希望这篇文章可以帮助你更好的了解类与对象这方面的知识。 文章目录 一、属性和行为作为整体二、访问权限三、class与struct的区别四、成员属性私有化 一、属性和行为作为整体
封装是面向对象编程中的一种特性它将数据和操作数据的方法组合在一起形成一个类。封装的目的是将数据和方法进行包装使其成为一个独立的实体外部只能通过类提供的接口来访问和操作数据而不需要了解内部的实现细节。
示例
class Circle {
private:double radius;public:void setRadius(double r) {radius r;}double getRadius() {return radius;}double getArea() {return 3.14 * radius * radius;}
};在上面的示例中我们定义了一个名为Circle的类它具有一个私有的属性radius和三个公有的方法setRadius、getRadius和getArea。 属性属性是类中的变量用于存储对象的状态。在示例中radius是Circle类的私有属性只能通过类的方法来进行访问和修改。 行为行为是类中的方法用于操作对象的状态。在示例中setRadius方法用于设置radius的值getRadius方法用于获取radius的值getArea方法用于计算圆的面积。
通过封装我们将属性和行为组合在一起形成了一个完整的圆对象。外部代码只能通过类的公有方法来访问和操作圆的属性而不需要知道属性的具体实现细节。这样可以提高代码的可维护性和安全性同时也方便了代码的重用。 二、访问权限 同样以上面为示例
在示例中属性radius被声明为私有(private)。私有属性只能在类的内部访问外部代码无法直接访问或修改私有属性的值。这是通过使用访问修饰符(private, public, protected)来实现的。
私有属性和方法只能在类的内部使用对外部是不可见的。这种封装的好处是可以隐藏类的内部实现细节提高代码的安全性和可维护性。
示例解释
在示例中radius属性被声明为私有这意味着外部代码无法直接访问radius属性。为了访问和修改radius的值我们提供了公有的setRadius和getRadius方法。通过setRadius方法外部代码可以传递一个新的半径值来修改radius的值通过getRadius方法外部代码可以获取radius的当前值。
Circle circle;
circle.setRadius(5.0); // 通过公有方法setRadius设置radius的值为5.0
double radius circle.getRadius(); // 通过公有方法getRadius获取radius的值在上面的示例中外部代码无法直接访问circle对象的radius属性而是通过公有方法setRadius和getRadius来间接访问和修改radius的值。这样可以确保radius属性的访问和修改是受控的同时隐藏了radius属性的具体实现细节。 三种访问权限修饰符
在C中有三种访问权限修饰符private、protected和public。这些修饰符用于控制类的成员属性和方法对外部的可见性和可访问性。 private私有私有成员只能在类的内部访问外部代码无法直接访问或修改私有成员的值。私有成员的目的是隐藏类的内部实现细节提高代码的安全性和封装性。 protected保护保护成员在类的内部和派生类中可访问但对外部是不可见的。保护成员的目的是在继承关系中提供一定的访问权限使派生类能够继承和访问基类的成员。 public公有公有成员可以在类的内部和外部访问。公有成员没有访问限制可以被任何代码访问和修改。
这些访问权限修饰符可以应用于类的成员属性和方法的声明。默认情况下类的成员是私有的。 三、class与struct的区别
在C中class和struct是用于定义自定义数据类型的关键字。它们之间的主要区别在于默认的成员访问权限和默认的继承权限。
成员访问权限
class默认的成员访问权限是私有(private)。struct默认的成员访问权限是公有(public)。
这意味着在class中声明的成员属性和方法默认是私有的只能在类的内部访问。而在struct中声明的成员默认是公有的可以在类的内部和外部访问。
示例
class MyClass {int x; // 默认为私有(private)void foo(); // 默认为私有(private)
};struct MyStruct {int x; // 默认为公有(public)void foo(); // 默认为公有(public)
};继承权限
class默认的继承权限是私有继承(private inheritance)。struct默认的继承权限是公有继承(public inheritance)。
这意味着在class中继承的成员默认是私有继承的派生类只能访问基类的公有和保护成员。而在struct中继承的成员默认是公有继承的派生类可以访问基类的公有、保护和私有成员。 继承部分会在下一篇文章详细的说明可以前往我主页订阅专栏每天一个C知识点
示例
class BaseClass {// ...
};class DerivedClass : BaseClass {// 默认为私有继承(private inheritance)
};struct BaseStruct {// ...
};struct DerivedStruct : BaseStruct {// 默认为公有继承(public inheritance)
};除了上述区别之外class和struct在语法上没有其他差异它们可以具有相同的成员、方法和功能。选择使用class还是struct取决于个人偏好和代码的语义。一般来说如果定义的是一个拥有私有成员和实现细节的复杂数据类型通常会使用class如果定义的是一个简单的数据容器或数据结构通常会使用struct。 四、成员属性私有化
将类的成员属性私有化是一种常见的编程实践它可以提供更好的封装性和数据安全性。私有成员属性只能在类的内部访问外部代码无法直接访问或修改私有属性的值。这样可以隐藏类的内部实现细节防止外部代码对属性的误操作或非法访问。
在C中可以使用访问权限修饰符来设置成员属性的访问权限。通过将属性声明为私有(private)可以将其限制为只能在类的内部访问。私有属性通常通过公有的成员函数例如getters和setters来间接访问和修改。
示例代码
class MyClass {
private:int privateAttribute; // 私有属性public:// 公有成员函数用于访问和修改私有属性int getPrivateAttribute() {return privateAttribute;}void setPrivateAttribute(int value) {privateAttribute value;}
};在上述示例中privateAttribute被声明为私有属性外部代码无法直接访问。通过公有的getPrivateAttribute()和setPrivateAttribute()函数可以间接地访问和修改私有属性的值。
私有化成员属性的好处包括
隐藏类的内部实现细节提高代码的封装性和安全性。通过公有的成员函数来控制对私有属性的访问和修改可以进行数据验证和处理。允许在不改变类的接口的情况下修改属性的实现细节。