请考虑java.awt.font.TextLayout
的官方OpenJDK source中的此代码:
public final class TextLayout {
/* ... */
protected void handleJustify(float justificationWidth) {
// never called
}
}
这里的用例是什么?为什么编写这样的代码一般有意义?
答案 0 :(得分:5)
受保护的是(见access levels):
对于final
类,该方法由同一个包中的其他类使用:它与无访问修饰符(也称为“package-private”)相同。
答案 1 :(得分:4)
protected
个成员。我的猜测是,在某些早期(可能甚至不是公共的)版本中,该类曾经是非final的,然后是最终的,并且受保护的方法保持原样,因为在同一个包中可能存在使用它的代码(而不是改为私有包,因为没有人看到这样做的好处。)
答案 2 :(得分:3)
仅在其自己的包中使用
protected - member - 仅在其包及其子类
中可访问如果有人将方法定义为final,那么它就不能被覆盖并动态查找。
答案 3 :(得分:1)
该类无法进一步扩展或子类化,但仍可从包中访问该方法。
答案 4 :(得分:0)
就在那里:如果这是一个扩展另一个的类,受保护的方法可能会扩展超类中的受保护方法。寻找的另一个可能的原因。