当前位置: 首页 > article >正文

读《Effective Java》笔记 - 条目15

条目15:最小化类和成员地可访问性

Java中四种访问修饰符

  • public:可以被任何类访问。
  • protected:可以被同一包中的类和子类访问。
  • default(无修饰符):只允许同一包中的类访问。
  • private:只能被当前类访问。

为什么要最小化可访问性?

  1. 减少不必要的依赖:公开的字段或方法会让外部代码依赖于它们的具体实现。如果我们改变了公开的 API,可能会破坏与外部代码的兼容性。通过将字段或方法的访问限制为 privateprotected,可以减少这种风险。
  2. 增强封装性:类内部的实现细节应对外部不可见,避免直接访问类的内部状态,保证类的封装性。封装性好,类就更容易维护和修改。
  3. 提高可测试性:当类的内部细节受限时,我们可以更容易地编写单元测试,专注于类的行为,而不需要关注其实现细节。

遵循原则

  • 尽量使用private修饰符:大多数成员(如字段和方法)应当设为 private,除非它们需要被外部访问。对于字段,private 是最安全的选择。
  • 使用包内访问(default):当类的成员只需要在同一个包内使用时,可以将它们设置为包内访问(即不加修饰符)。这种方式比 public 更严格,也足够灵活,避免了外部不必要的访问。
  • protected 应谨慎使用protected 会让子类和同包类可以访问成员,但它也会暴露给继承类,所以除非有充分理由,不要随意使用 protected。尤其在 Java 的组合优于继承的哲学下,尽量避免继承和公开 protected 成员。
  • public 只用于 API 的必要部分:如果方法或类需要对外提供功能,那么它才应该是 public。但即使是 public,也应当确保其设计对外接口的简洁与清晰,避免暴露不必要的实现细节。
  • 除了作为常量地共有静态final字段外,公有类不应该由任何公有的字段。
  • 确保公有的静态final字段所引用的对象是不可变的

http://www.kler.cn/a/419517.html

相关文章:

  • centos 7 离线安装postgis插件
  • 两个生活中的例子反向理解正/反向代理?
  • 周鸿祎再次“创业”,盯上百度
  • 【Oracle11g SQL详解】GROUP BY 和 HAVING 子句:分组与过滤
  • vb.net常用命名空间
  • 电子应用设计方案-31:智能AI音响系统方案设计
  • 数据结构与算法学习笔记----堆
  • day32|leetcode 509.斐波那契数,70.爬楼梯,746.使用最小花费爬楼梯
  • 什么是隐式类型转换?隐式类型转换可能带来哪些问题? 显式类型转换(如强制类型转换)有哪些风险?
  • 人工智能技术在外骨骼机器人中的应用,发展历程与原理介绍
  • 普及组集训--图论最短路径
  • 婚礼照片分享平台WeddingShare
  • Java NIO 全面详解:初学者入门指南
  • C 语言学习的经典书籍有哪些?
  • 【数据分析】伊藤公式
  • 【golang】单元测试,以及出现undefined时的解决方案
  • Linux离线安装docker(arm64架构cpu)极速版
  • Python面试实战:高效处理海量日志,找出高频IP
  • 怎么修改虚拟机上Ubuntu的ip为静态ip
  • SpringBoot源码解析(六):打印Banner
  • Brain.js(五):不同的神经网络类型和对比,构建神经网络时该如何选型?
  • 用 Python 从零开始创建神经网络(十三):训练数据集(Training Dataset)
  • ArcGIS对地区进行筛选提取及投影转换
  • Elasticsearch 的存储与查询
  • 数据科学家创建识别假图像的工具
  • 【Go 基础】channel