假设我有一个 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/