java - java中 protected 变量有哪些维护问题

标签 java protected

所以我的讲师说了一些类似的话:

Declaring variables as protected exposes them to all subclasses, can cause a maintenance problems, best to declare variables as private (even in inheritance relationships) and write getter and setter methods to provide access to variables.

但他没有解释维护问题是什么。如果子类可以访问变量会有什么问题。

我是 java 的新手,所以简单的解释会更有帮助

最佳答案

假设您编写了一个带有protected 实例变量的类:

public class A {
    protected int c;
}

现在,其他人可以扩展您的类并直接使用 c 变量:

public class B extends A {
    public void someMethod () {
        System.out.println(c + 5);
    }
}

现在 B 依赖于类 Ac 成员。如果明天你决定删除那个变量,或者重命名它,或者改变它的类型,B 将无法通过编译。

当您将 c 设为私有(private)并提供 getter 和 setter 来访问它时,您可以自由更改 c 而不会破坏扩展您的类的类。

关于java - java中 protected 变量有哪些维护问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271291/

相关文章:

java - 从方法返回数组(似乎不起作用)

java - protected 修饰符是什么意思?

c# - 公共(public)与 protected

使用 protected 构造函数的 C++ 常量实例?

java - 访问 protected 成员

c++ - 如何在具有 protected 析构函数和公共(public)销毁方法的 3 方类上使用 shared_ptr

java - saveAll() 太慢了。带 Spring 启动的 Cassandra 数据库。为什么?

java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?

java - 三元语句突破构造函数

java - Spring MVC 中的 ehcache