对java set和get方法感到困惑

时间:2012-10-09 20:10:13

标签: java methods setter getter

我真的无法弄明白,我怎样才能在不同的类中使用set和get方法。我只需要有两个班级 - 一级,二级。在第一课我已设置并获取,哪些工作正常,但我想在第二课中获取方法,这将返回与第一课中的get方法相同的文本。

一级工作正常,但我应该把它放到第二课?

public class one {

private String name;

public one() {
}

public void setName(String name) {
    this.name = name;
}

public String getName() {
    return this.name;
}

}

4 个答案:

答案 0 :(得分:3)

我认为你作为一个新人可能会尝试做太多的事情。

首先要理解,Class只是对象的模板或蓝图。除此之外,“获取”课程和“设置”课程实际上只是您班级私人数据的公共“包装”。这使您可以作为类作者控制进入您的类并离开它的数据。这就是它的全部内容。

考虑到这一点,Getters和Setter对任何其他类或实例都没有任何想法或概念(除非它们碰巧是该类的成员,我认为这不是这里的情况)。因此,在一个类中使用一个“getter”的想法从另一个类中返回一个值并不完全相加。

答案 1 :(得分:0)

如果您想重用one中的方法,请将类two作为one的子类:

 public class two extends one {
 }

最好使用正确的命名约定(将类名中的首字母作为大写):

public class One {
}

public class Two extends One {
}

希望这对您有用。

答案 2 :(得分:0)

setter和getter方法对于这两个类都是个体的。

Class1 { 
    int a; float b;

    void setA(int a) { this.a = a; }

    int getA() { return this.a; }
}

Class2 { 
    String s;

    void setS(string str) { this.s = str; }

    String getS() { return this.s; }
}

除此之外,setter和getter方法没有那么复杂。

如果您有任何特殊要求,您总是希望返回Class1获取者给出的值,

然后在Class2 getter()方法中,执行

String getS()
{
    return obj1.getA().toString();
}

答案 3 :(得分:0)

Setters和Getters是用于获取类字段值的方法。它们是一种使您独立于该值背后的逻辑的法典实践,因为您可以返回一个简单的值

public String getName() {
    return value; 
}

或做更复杂的事情:

public String getName() {
    String modValue = new String();
    //Lots of code here
    return modValue;
}

如果您需要返回其他内容或执行其他操作,与此特定类交互的类仍将调用setter和getter而不会受到影响(除非您进行重大更改,例如更改值的类型... )。

One classOne = new One();
one.getValue(); //returns the value or executes some logic before. It doesn't matter
                //if it changes because the method is the same. Your classes do not
                //depend on each other.

吸气剂的替代品是......这......

classOne.value;

你直接访问该字段,这是一个代码气味,灾难和许多我没有词库的adjetives。这样一来,如果你需要在返回它之前做一些重要的事情(想想这就好像你返回一个数字而你现在需要绕过它......你必须改变你所有的代码或者每次得到它时都要对它进行舍入。一个吸气剂你可以在它返回之前将它绕过来。)

您应该在这里考虑您的设计,因为如果您想要返回一个与其他类的值相同的值,您可以考虑将类one的实例添加到类two并委派只有当他们以证明这一点的方式相关时才会调用getter。如果对象不相关,则应自行设置该值。

为每个类定义了setter和getter,因为它们与每个特定的上下文相关。你不能定义一个被调用或与另一个类相关的getter,除非这些类是相关的,因为一个包含另一个,或者因为它们之间存在某种连接,例如(给出一些例子):

  1. 外部代理重复值
  2. 两个类共享的外部对象
  3. 两个类的常见数据来源
  4. 一个类是另一个类的扩展,第二个类是 重写方法。