簡體   English   中英

Java中受保護的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM