gpt4 book ai didi

java - 如何在已调用的方法中引用对象?

转载 作者:行者123 更新时间:2023-12-02 03:09:03 24 4
gpt4 key购买 nike

我创建了一个名为 Rational 的类,它存储两个私有(private)整数(数字和分母)。我正在尝试创建一个方法,该方法返回一个新的 Rational 对象,该对象包含调用该方法的对象的倒数。

class Rational{

private int numer;
private int denom;

//sets numerator and denominator
public Rational (int numer, int denom){
this.numer = numer;
this.denom = denom;
}

//copy constructor for a Rational object
public Rational (Rational copy){
this(copy.getNumer(), copy.getDenom());
}

//sets numerator to parameter
public void setNumer(int numer){
this.numer = numer;
}

//returns the stored numerator
public int getNumer(){
return this.numer;
}

//sets denominator to parameter
public void setDenom(int denom){
this.denom = denom;
}

//returns the stored denominator
public int getDenom(){
return this.denom;
}

//returns a new Rational object that contains the reciprocal of the object that
//invoked the method
//Method #1
public Rational reciprocal(){
this(rat1.getDenom(), rat1.getNumer());
}

//Method #2
public Rational reciprocal(Rational dup){
this(dup.getDenom(), dup.getNumer());
}

我想用对象rat1调用倒数方法,但我不知道如何在方法内部引用rat1的变量。有没有办法以与方法 #1 类似的方式做到这一点。 (顺便说一句,我知道这不起作用)另外,当使用方法 #2 时,为什么我不断收到“构造函数调用必须是第一个语句”错误,即使它是第一行?

最佳答案

目前尚不清楚 rat1 在您的 reciprocal 方法中的含义...但您不能只使用 this(...) 是这些是方法,而不是构造函数。在我看来,您可能想要:

public Rational reciprocal() {
return new Rational(denom, numer);
}

如果您想调用这些方法,您可以在 this 上隐式执行它们:

public Rational reciprocal() {
return new Rational(getDenom(), getNumer());
}

或者您可以显式使用this:

public Rational reciprocal() {
return new Rational(this.getDenom(), this.getNumer());
}

...但是第二个 reciprocal 方法没有任何意义,因为您可以只调用 x.reciprocal() 而不是 irrelevantRational.reciprocal(x) .

顺便说一句,我会重命名方法和变量以避免缩写:

private int numerator, denominator;

public int getNumerator() {
return numerator;
}

// etc

如果我是你,我还会将类设置为 final 且不可变。

关于java - 如何在已调用的方法中引用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41335954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com