java "this"关键字正确使用

标签 java this

我在我的构造函数中有一个使用关键字 this 的 Fraction 类:

public Fraction(int numerator, int denominator)
{
    this.numerator = numerator; 
    this.denominator = denominator; 
    adjustSigns();

    if(this.denominator == 0 )
    {
     throw new FractionException(" Undefined Fraction ");
    } 
}

我还有一个方法:

 public FractionInterface multiply(FractionInterface secondFraction)
 {
    Fraction second = (Fraction) secondFraction; 
    Fraction answer = new Fraction ((numerator * second.numerator), (denominator * second.denominator));        
    answer.reduceToLowestTerms();
    return answer; 
}

上述方法在我编译和运行时工作正常,但是这个版本:

 public FractionInterface multiply(FractionInterface secondFraction)
 {
    Fraction second = (Fraction) secondFraction; 
    Fraction answer = new Fraction ((this.numerator * second.numerator), (this.denominator * second.denominator));      
    answer.reduceToLowestTerms();
    return answer; 
 }

我的问题是哪一个是正确的??如果在我的构造函数中使用“this”关键字,我是否也必须在我的方法中使用它?同样,他们都工作得很好并且做了他们应该做的事情,但我想知道哪种方式是正确的方式。谢谢。

最佳答案

如果您希望区分局部变量和同名成员,则必须显式使用 this。否则,它是可选的。

您的构造函数不会将传递值分配给没有 this. 前缀的实例成员,因为方法参数会隐藏实例成员。如果你给参数不同的名字,你可以不用 this. :

public Fraction(int num, int denom)
{
    numerator = num; 
    denominator = denom;
    ...
}

两个 multiply 版本是相同的。

关于java "this"关键字正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805295/

相关文章:

java - 将 "this"作为方法参数传递 - 说明

PHP 等同于 Ruby 的 @instance_variable?

javascript 将 console.log 分配给一个对象

java - Comparable类的compareTo方法如何对对象起作用

java - 为什么Proguard混淆后找不到这个资源?

java - 解析字符串内的变量 - JSTL?

javascript - 使用 ng-repeat 更改按 Angular 单击的按钮的 css 类

javascript - 使用 `this` 在函数内部调用函数的问题

java - jsp,Servlet在提交页面时仅重新加载表单

java - 阅读 Web 应用程序资源