[英]Protected methods in Java
當我們可以直接將變量設置為protected時,為什么需要受保護的修飾符方法?
例如:在下面的代碼中,他們將實例變量SocialSecurityNumber設置為private,並定義一個受保護的setter方法來設置其值? 為什么我們不能直接將變量SocialSecurityNumber設置為protected?
public class SSNWrapper {
private int SocialSecurityNumber ;
public SSNWrapper (int ssn) { socialSecurityNumber = ssn ;}
public int getSSN () { return SocialSecurityNumber; }
protected void setSSN(int SSN) { socialSecuritynumber = ssn ; }
}
在該特定示例中,不會有太大差異。 在現實生活中, setSSN
方法可能更像:
protected void setSSN(int SSN) throws InvalidSSNException {
// check that the given SSN is valid
// ...
socialSecurityNumber = ssn;
}
這使基類可以保證它僅包含有效的SSN。 基類不能保證該字段是否受保護。
在有關訪問修飾符的教程中:
選擇訪問級別的提示:
如果其他程序員使用您的類,則要確保不會發生由於濫用而引起的錯誤。 訪問級別可以幫助您做到這一點。
使用對特定成員有意義的最嚴格的訪問級別。 除非有充分的理由,否則請使用private。
避免使用除常量之外的公共字段。 (本教程中的許多示例都使用公共字段。這可能有助於簡要說明一些要點,但不建議在生產代碼中使用。)公共字段傾向於將您鏈接到特定的實現,並限制了更改代碼的靈活性。
簡短的版本是它防止其他類修改聲明實例變量為private的類中的數據。
因為有時您需要更改獲取或設置此值的操作。 例如,您需要計算該值。 或設置另一個值。 或運行監聽器之類的東西。...這樣可以給您帶來更大的靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.