java 保护类型_Java 类的受保护访问(学习 Java 编程语言 046)
最好將類中的字段標記為 private,而方法標記為 public。任何聲明為 private 的內容對其他類都是不可見的。這對子類來說也完全適用,即子類也不能訪問超類的私有字段。
Java 中的受保護部分對所有子類及同一個包中的所有其他類都可見。
有時候可能希望限制超類中的某個方法只允許子類訪問,或者允許子類的方法訪問超類的某個字段。需要將這些類方法或字段聲明為受保護(protected)。例如,如果將超類 Employee 中的 hireDay 字段聲明為 protected,而不是 private,Manager 類的方法就可以直接訪問這個字段。
Employee 類
public class Employee {
// 聘用日期
protected LocalDate hireDay;
...
}
Employee 類的子類們:
public class Manager extends Employee {...}
public class Programmer extends Employee {...}
在 Java 中,對象的保護字段只能由同一個包中的類訪問。現在考慮一個 Programmer 子類,這個子類在另一個不同的包中。Programmer 類中的方法只能查看 Programmer 對象自己的 hireDay 字段,而不能查看其它 Employee 對象的這個字段。有了這個限制,就能避免濫用保護機制,不能通過派生子類的對象來訪問超類對象的受保護的字段。
在實際應用中,要謹慎使用受保護字段。假設你的類要提供給其他程序員使用,而你在設計這個類時設置了一些受保護字段。你不知道的是,其他程序員可能會由這個類再派生出新類,并開始訪問你的受保護字段。在這種情況下,如果你想修改你的類的實現,就勢必會影響那些程序員。這違背了 OOP 提倡數據封裝的精神。
受保護的方法更具有實際意義。如果需要限制某個方法的使用,就可以將它聲明為 protected。這表明子類(可能很熟悉祖先類)得到了信任,可以正確地使用這個方法,而其他類則不行。
這種方法的一個很好示例就是 Object 類中的 clone 方法。
public class Object {
@HotSpotIntrinsicCandidate
protected native Object clone() throws CloneNotSupportedException;
}
總結
以上是生活随笔為你收集整理的java 保护类型_Java 类的受保护访问(学习 Java 编程语言 046)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 正则 空格_Java中关于空格
- 下一篇: java 上下文加载器_如何将JDK6