猿问

在Java中设置和获取方法?

如何使用set和get方法,为什么要使用它们?他们真的有帮助吗?还可以给我示例set和get方法吗?



噜噜哒
浏览 579回答 3
3回答

神不在的星期二

Set和Get方法是数据封装的一种模式。您可以定义get访问这些变量的set方法以及修改它们的方法,而不是直接访问类成员变量。通过以这种方式封装它们,您可以控制公共接口,以备将来需要更改类的内部工作方式时使用。例如,对于成员变量:Integer x;您可能有以下方法:Integer getX(){ return x; }void setX(Integer x){ this.x = x; }Chiccodoro还提到了一个重要的观点。如果您只想允许任何外部类对该字段进行读取访问,则可以通过仅提供公共get方法并保留set私有方法或完全不提供a 来做到这一点set。

蝴蝶刀刀

我想添加到其他答案中,可以使用setter防止对象处于无效状态。例如,假设我们必须设置一个建模为String的TaxId。setter的第一个版本可以如下:private String taxId;public void setTaxId(String taxId) {    this.taxId = taxId;}但是,我们最好防止使用无效的taxId设置对象,因此我们可以进行检查:private String taxId;public void setTaxId(String taxId) throws IllegalArgumentException {    if (isTaxIdValid(taxId)) {        throw new IllegalArgumentException("Tax Id '" + taxId + "' is invalid");    }    this.taxId = taxId;}下一步,要改善程序的模块化,是使TaxId本身成为一个对象,能够对其进行检查。private final TaxId taxId = new TaxId()public void setTaxId(String taxIdString) throws IllegalArgumentException {    taxId.set(taxIdString); //will throw exception if not valid}同样对于获取者,如果我们还没有价值怎么办?也许我们想走一条不同的道路,我们可以这样说:public String getTaxId() throws IllegalStateException {    return taxId.get(); //will throw exception if not set}

30秒到达战场

我想你想要这样的东西:public class Person {  private int age;  //public method to get the age variable  public int getAge(){       return this.age  }  //public method to set the age variable  public void setAge(int age){       this.age = age;  }}您只是在对象实例上调用这种方法。这种方法特别有用,特别是在设置某些东西会产生副作用的情况下。例如,如果您想对某些事件做出反应,例如:  public void setAge(int age){       this.age = age;       double averageCigarettesPerYear = this.smokedCigarettes * 1.0 / age;       if(averageCigarettesPerYear >= 7300.0) {           this.eventBus.fire(new PersonSmokesTooMuchEvent(this));       }  }当然,如果有人忘记打电话给setAge(int)他应该去的地方并age直接使用进行设置,这将很危险this.age。
随时随地看视频慕课网APP

相关分类

Java
我要回答