java - 混淆何时使用私有(private)字段与 protected 字段

标签 java inheritance private public access-modifiers

我看到 SO 中的用户说 protected 字段不好,因为随着代码的增长它会引入问题。请引用以下代码。

public class Car {
    private String modelName;
    private int yearReleased;

//getters and setters

}

如果 Car 类由名为 ToyotaCar 的类扩展

public class ToyotaCar extends Car{
   // Toyota specific stuff
}

我希望我的 ToyotaCar 对象有一个 modelNameyearReleased 字段。这就是我决定从 Car 类扩展的原因。但是私有(private)成员不会被子类继承(即使我可以使用公共(public) getter 和 setter 访问这些字段)。现在我的困惑是我是否应该将 Car 类中的文件设置为 protected 而不是私有(private)的。但人们说这会带来问题。

这是否意味着无论你写什么类总是将字段设为私有(private)?

如果是,在什么情况下使用了 protected 关键字?它是否仅适用于我们计划在子类中使用的方法?

最佳答案

您自己搞定了:一个好的做法是默认将所有内容设置为“私有(private)”。然后,您的特定设计可能需要例如能够在子类中使用某些属性或(最好)某些方法。在那种情况下,您需要将它们移至“ protected ”状态 - 但仅限于那种情况。

请记住,使用访问器(getter 和 setter)是完全可以的,并且可以在不破坏封装的情况下完成。

关于java - 混淆何时使用私有(private)字段与 protected 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576685/

相关文章:

c# - 具有多个约束的通用

ios - 当我尝试在函数前添加 private 时,Xcode 报错 "attribute private can only be used in a non local scope"

java - java 中传递给静态函数的参数的更改

java - 创建具有密码保护的文件夹

c++ - 将函数从一个类发送到另一个类并在 C++ 中执行

java - 如何使用checkstyle、PMD、findbugs等工具检查java类的继承级别?

java - 错误: constructor Miclass in class Miclass cannot be applied to given types;

java - 重写私有(private)方法

java - Java 中文件名兼容的哈希值

java - 如何使用IAIK JCE用Java中的PKCS#5格式的PBE加密RSA私钥?