繁体   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