-2

我真的无法弄清楚,如何在不同的类中使用 set 和 get 方法。我只需要上两节课——第一节课,第二节课。在第一类中,我已经设置和获取,它们可以正常工作,但是我想在第二类中使用 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

4 回答 4

3

我认为作为一个新人,你可能试图一次做太多事情。

首先要理解,类只是对象的模板或蓝图。除此之外,“Get”ters 和“Set”ters 实际上只是类中私有数据的公共“包装器”。这使您作为课程作者可以控制进入和离开班级的数据。这就是它的全部。

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

于 2012-10-09T20:14:38.983 回答
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 方法并没有那么复杂。

如果对您有任何特殊要求,您总是希望返回Class1getter 给出的值,

然后在Class2getter() 方法中,执行

String getS()
{
    return obj1.getA().toString();
}
于 2012-10-09T20:13:54.013 回答
0

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

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;

您可以直接访问该字段,这是代码味道、灾难和许多我没有同义词库的形容词。这样,如果您需要在返回之前做一些有价值的事情(想象一下,如果您返回一个数字,现在需要对其进行四舍五入......您必须更改所有代码或每次获取它时对其进行四舍五入。用一个吸气剂,您可以在返回之前对其进行舍入)。

你应该在这里考虑你的设计,因为如果你想返回一个与其他类的值完全相同的值,你可以考虑将一个类的实例one放入类中two,并且只有当它们以某种方式相关时才委托 getter 调用证明了这一点。如果对象不相关,您应该自己设置该值。

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

  1. 外部代理重复值
  2. 两个类共享的外部对象
  3. 两个类要处理的通用数据源
  4. 一个类是另一个类的扩展,第二个类是覆盖方法。
于 2012-10-09T20:16:17.387 回答
0

如果要重用 中的方法one,请将类two设为 as 的子类one

 public class two extends one {
 }

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

public class One {
}

public class Two extends One {
}

希望这对你有用。

于 2012-10-09T20:13:42.860 回答