gpt4 book ai didi

java - 我在类里面是否正确使用了 this 关键字?

转载 作者:行者123 更新时间:2023-11-29 03:04:17 26 4
gpt4 key购买 nike

我是编程新手,这是我们在类里面进行的第一个面向对象的程序之一。我觉得我用过“这个”。比我需要的更多,但我的程序运行正常,我得到了正确的输出。在我的 getter 中,我可以在不使用 this 的情况下返回变量吗?我想我的问题是 this.variablename 是指在我的类顶部声明的参数变量还是数据字段?

import java.util.Date;

public class Account{

private int id = 0;
private double balance = 0;
private static double annualInterestRate = 0.00;
private Date dateCreated;

public Account(){}

public Account(int id, double balance){
this.id = id;
this.balance = balance;
}

public int getId(){
return this.id;
}

public void setId(int id){
this.id = id;
}

public double getBalance(){
return this.balance;
}

public void setBalance(double balance){
this.balance = balance;
}

public double getAnnualInterestRate(){
return this.annualInterestRate;
}

public void setAnnualInterestRate(double annualInterestRate){
this.annualInterestRate = annualInterestRate;
}

public Date getDateCreated(){
return this.dateCreated = new Date();
}

public double getMonthlyInterestRate(){
return (this.annualInterestRate / 12);
}

public double getMonthlyInterest(){
return ((this.annualInterestRate / 100) / 12) * this.balance;
}

public void withdraw(double amount){
this.balance -= amount;
}

public void deposit(double amount){
this.balance += amount;
}

}

这是我的主要方法和测试类:

public class AccountTest{

public static void main(String[] args){

Account myObject = new Account(112233, 20000.00);
myObject.setAnnualInterestRate(4.5);
myObject.withdraw(2500.00);
myObject.deposit(3000.00);

System.out.printf("The account balance is $%,.2f.", myObject.getBalance());
System.out.printf("\nThe monthly interest is $%,.2f.", myObject.getMonthlyInterest());
System.out.print("\nThe account was created at " + myObject.getDateCreated());
}
}

最佳答案

Have I used the this keyword correctly in my class?

是的。在绝对不必要的情况下使用 this 并没有错。有些人会争辩说,它使意图更加明确。无论哪种方式,这都是一种风格决定。

In my getters, can I return the variable without using this?

是的。

I guess my question is does this.variablename refer to the parameter variable or the data field declared at the top of my class?

this.name 指的是一个字段而不是参数。

名称 可以 引用参数或字段。如果有一个(范围内的)参数和一个同名的字段,它将引用参数。因此,如果您写道:

public void setId(int id){
id = id;
}

您只需将参数 id 的值赋给它自己。我损坏的 setId 方法的“修复”是使用 this 或更改参数的名称;例如使其成为 newId

关于java - 我在类里面是否正确使用了 this 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917261/

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