”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 面向对象的编程封装

面向对象的编程封装

发布于2025-02-06
浏览:169

[2 1。什么是封装?

Encapsulamento em Programação Orientada à Objetos封装是面向对象的编程(POO)的基本原理之一,它允许隐藏对象的实现详细信息。这意味着您可以更改对象的内部实现,而不会影响系统的其他部分与之相互作用。此功能在未来维护代码方面促进了模块化和易于措施。

2。为什么使用封装?

使用封装被认为是一个好练习,原因有几个:

轻松的手术维护

:可以进行类实现的更改,而无需修改使用此类的代码,因为公共接口保持不变。

    数据保护
  • :防止对对象的内部数据的直接访问,从而保护对象的完整性。 一致性和可预测性
  • :确保始终使用方法和属性,以避免不需要的更改。
  • 3。如何封装?
  • 封装由
  • 访问修饰符实现,该访问限制了类属性和方法的可见性。主要访问修饰符是:

private

:属性和方法仅在类本身中访问。

:在类本身和子类中可以访问属性和方法。

public
    :可以从代码的任何部分访问属性和方法。
  • 4.如何进行封装?
  • 要封装类的属性,将它们声明为
  • private 。例如,在人类类中,名称属性被封装如下:
  • package示例.pooo.ex; 公共班级{ 私有字符串名称; //访问名称属性的方法 公共字符串getName(){ 返回名称; } //修改名称属性的方法 public void setName(字符串名称){ this.name = name; } } 访问私人属性
可以通过方法

getter

setter 访问私有属性。这些方法提供了一种访问或操纵属性的方法,因为它们可以具有限制其他类访问此属性的修饰符,就像 private
一样,尊重封装:

package exemplos.poo.ex;

public class Pessoa {
    private String nome;

    // Método para acessar o atributo nome
    public String getNome() {
        return nome;
    }

    // Método para modificar o atributo nome
    public void setNome(String nome) {
        this.nome = nome;
    }
}

:返回属性的值。

:允许您更改属性的值。 5。何时使用封装? 应尽可能在便便中应用封装,因为它提供了许多好处:

    数据保护
  • :确保对象的内部数据无法直接访问。 :促进代码修改而不影响系统的其他部分。
  • 代码重复使用:促进可以在不同上下文中重复使用的类的创建。
  • :帮助隔离代码的一部分,使测试更简单,更有效。

安全性

:将不需要的操作的风险降低到内部数据。

结论
  • 封装是面向对象的编程中的重要实践,有助于创建更健壮,安全且易于维护系统。通过使用访问修饰符和固定器方法,您可以控制对属性的访问,并在对象之间提升更安全,更可预测的交互。
版本声明 本文转载于:https://dev.to/emanoelcarvalho/encapsulamento-em-programacao-orientada-a-objetos-3nf5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    在这里工作/},false); 不幸的是,答案是否。除非在Creation中存储对处理程序的引用。要解决此问题,请考虑将事件处理程序存储在中心位置,例如页面的主要对象,请考虑将事件处理程序存储在中心位置,否则无法清理匿名事件处理程序。 。这允许在需要时轻松迭代和清洁处理程序。
    编程 发布于2025-02-06
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python 导入编解码器 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有表情符号 emoji_pattern = re.compile(“ [”...
    编程 发布于2025-02-06
  • 为什么我的jar文件无法加载主类,我该如何修复?
    为什么我的jar文件无法加载主类,我该如何修复?
    运行jar files:发现主级键在执行JAR文件时,可能会遇到陷阱。本文深入研究了Jar文件执行的神秘世界,发现了“无法加载主类”错误的复杂性。被用户的体验示例,只需在JAR文件或运行上双击它是从DOS提示中的,而无需指定主类是不足的。为了解决此问题,我们深入研究了主类的概念,即JAR文件中的重...
    编程 发布于2025-02-06
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    [2最后一行与数据集中的每个不同标识符关联。考虑以下数据: 1 2014-02-01 kjkj 1 2014-03-11 ajskj 3 2014-02-01 sfdg 3 2014-06-12 fdsa 在(ID)上选择DISTINC 来自the_table 按ID订单,date desc;...
    编程 发布于2025-02-06
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 问题:考虑以下CSS和HTML: position:fixed; grid-template-columns:40%60%; grid-gap:5px; 背景:#eee; 当位置未固定时,网格将正确显示。但是,当...
    编程 发布于2025-02-06
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 如何使用CTYPE有效地为C/C ++库创建Python绑定?
    如何使用CTYPE有效地为C/C ++库创建Python绑定?
    与python CTYPES模块是Python标准库的一部分,为此任务提供了稳定且可广泛的解决方案。与其他绑定方法不同,CTYPES不依赖于对其进行编译的Python版本,从而确保与各种Python安装的兼容性。考虑以下代码片段:要与Python连接起来,我们必须将功能声明为extern“ c...
    编程 发布于2025-02-06
  • 使用JavaScript Fetch API登录后如何处理重定向?
    使用JavaScript Fetch API登录后如何处理重定向?
    [2使用RedirectResponse,将自动在客户端遵循重定向。这是因为默认情况下,重定向模式设置为fetch()函数中。结果,用户不会重定向到新的URL,而是Fetch()将遵循幕后的重定向,并从重定向URL返回响应。 如果您使用的是交叉孔请求,则需要设置服务器端上的access-contro...
    编程 发布于2025-02-06
  • Laravel vs Codeigniter:网络开发的全面比较
    Laravel vs Codeigniter:网络开发的全面比较
    为您的Web开发项目选择正确的框架对于确保效率,可扩展性和用户满意度至关重要。 Laravel和Codeigniter是两个最受欢迎的PHP框架,每个PHP框架都具有不同的功能和优势。无论您是开发人员还是在英国寻求可靠的PHP开发公司的企业主,了解这些框架的细微差别都可以指导您的决定。 ...
    编程 发布于2025-02-06
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-02-06
  • C ++ 17中引入的关键语言和库功能是什么?
    C ++ 17中引入的关键语言和库功能是什么?
    C 17 的新功能在C 17的功能开发之后,已经引入了几个新的语言功能和库添加: [2 class templatesRepresentation of values of any type with template <auto>Lambda Enhancements: 简介Co...
    编程 发布于2025-02-06
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-02-06
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2025-02-06
  • 如何有效地逆转Java 8流?
    如何有效地逆转Java 8流?
    反向java 8 streams 特定的intstream reversal 可以创建一个自定义方法以相反的顺序映射值范围。例如,如果我们的intstream范围从-5到0,则将其倒流将导致流0到-5。可以使用以下代码来实现这一点:此方法避免进行拳击和排序,从而产生了更有效的解决方案。 @cust...
    编程 发布于2025-02-06
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在默认值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 这种限制源于遗产实现的关注,这些限制需要为Current_timestamp功能提供特定的实现。消息和相关问题 `Productid` int(10)unsigned not ...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3