java - 继承会破坏封装吗?

标签 java inheritance encapsulation

假设我有一个 CSV 文件,我创建了一个名为 CsvFile 的类,该类扩展自 java.io.File。此类可以解析 CSV 文件并返回一些数据,例如文件中有多少列。它也可以用于将 java.io.File 作为输入的函数。像 FileUtils.copyFile(File from, File to)

我的同事认为我从继承中暴露了太多。他的想法是通过将 java.io.File 保存在私有(private)属性中来包装它,而不是继承它。他认为从文件中公开所有公共(public)方法/属性会破坏封装,但我认为这是一个好处,因为我们可以免费获得 java.io.File 中的所有函数。

你怎么看?

最佳答案

我宁愿同意你同事的观点:继承 java.util.File 会暴露不适用于 CsvFile 对象的方法,例如 list() listFiles()setExecutable() 等。

java.util.File 成为 getter 后面的属性听起来是一个更好的选择:它不会向类的用户透露不相关的操作,并让您从类的基类继承选择。

关于java - 继承会破坏封装吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217999/

相关文章:

java - Facebook 登录 Android SDK ClassNotFoundException : com. facebook.gdp.LightWeightLoginParameters

c++ - (初学者)C++关于继承

inheritance - 返回 F# 中的派生类

javascript - 用JavaScript封装,存在吗?

java - 为什么不直接使用属性而是使用 getXXX() 方法

java - 尝试设置 CollapsingToolbarLayout 的副标题时获取 'java.lang.ClassCastException'

java - 无法使用 POST 请求检索第 2 页

java - 如何在 JavaFX 中双向绑定(bind)嵌套属性?

ruby-on-rails - STI、MTI 或 CTI,目前建议的 Rails 4 解决方案是什么?

java - 在 Java 中使用 getter 方法将元素添加到 List 是一种不好的做法吗?