在java中与受保护变量相关的维护问题

bil*_*ley 2 java protected

所以我的讲师说了一句话:

将变量声明为protected会将它们暴露给所有子类,可能会导致维护问题,最好将变量声明为私有(即使在继承关系中),并编写getter和setter方法以提供对变量的访问.

但他没有解释维修问题是什么.如果子类可以访问变量,那么会出现什么问题.

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

Era*_*ran 5

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

public class A {
    protected int c;
}
Run Code Online (Sandbox Code Playgroud)

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

public class B extends A {
    public void someMethod () {
        System.out.println(c + 5);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在B取决于c你班级的成员A.如果明天您决定删除该变量,或重命名该变量或更改其类型,B则不会通过编译.

当你c私有并提供一个getter和setter来访问它时,你可以自由地改变c而不会破坏扩展你的类的类.