java “this” keyword proper use

前端 未结 3 1178
[愿得一人]
[愿得一人] 2021-01-15 02:01

I have a Fraction class using keyword this in my constructor:

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


        
相关标签:
3条回答
  • 2021-01-15 02:43

    I think you have a bit of a confusion on how the "this" keyword works.

    Let me give you an example:

    This

    public class testing {
        private int a;
        private int b;
    
        testing(int a,int b){
            this.a = a;
            this.b = b;
        }
    }
    

    is the same as:

    public class testing {
        private int a;
        private int b;
    
        testing(int x,int y){
            this.a = x;
            this.b = y;
        }
    }
    

    Which of course for the second one would be easier to put if we do it like this:

    public class testing {
        private int a;
        private int b;
    
        testing(int x,int y){
            a = x;
            b = y;
        }
    }
    
    0 讨论(0)
  • 2021-01-15 02:50

    Using this explicitly is mandatory if you wish to distinguish between a local variable and a member of the same name. Otherwise, it is optional.

    Your constructor won't assign the passes values to the instance members without the this. prefix, since the method arguments would hide the instance members. If you give the arguments different names, you can do without the this. :

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

    Both multiply versions are the same.

    0 讨论(0)
  • 2021-01-15 02:59

    Both the cases you mentioned will work fine.

    Use of this is a good practice as its more readable due to our english mindset, When we say this.some_variable, we get a mental image of some_variable inside the current class

    this keyword is also helpful in avoiding variable shadowing

    0 讨论(0)
提交回复
热议问题