Java 我在课堂上是否正确使用了this关键字?
我是编程新手,这是我们在课堂上做的第一个面向对象的程序之一。我觉得我已经使用了“这个”。比我需要的更多,但我的程序工作正常,我得到了正确的输出。在我的getters中,我可以不使用这个返回变量吗?我想我的问题是this.variablename是指参数变量还是类顶部声明的数据字段Java 我在课堂上是否正确使用了this关键字?,java,this,Java,This,我是编程新手,这是我们在课堂上做的第一个面向对象的程序之一。我觉得我已经使用了“这个”。比我需要的更多,但我的程序工作正常,我得到了正确的输出。在我的getters中,我可以不使用这个返回变量吗?我想我的问题是this.variablename是指参数变量还是类顶部声明的数据字段 import java.util.Date; public class Account{ private int id = 0; private double balance = 0; pr
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());
}
}
(this)可以在类的方法或构造函数内部使用。(this)用作对其方法或构造函数正在被调用的当前对象的引用。此关键字可用于从“实例方法”或“构造函数”中引用当前对象的任何成员。(此)可在类的方法或构造函数中使用。(this)用作对其方法或构造函数正在被调用的当前对象的引用。此关键字可用于引用“实例方法”或“构造函数”中当前对象的任何成员
我在课堂上是否正确使用了this关键字
对。在完全没有必要的情况下,使用此
并非不正确。有些人会争辩说,这使意图更加明确。不管怎样,这都是一个风格决定
在我的getters中,我可以不使用这个返回变量吗
对
我想我的问题是this.variablename是指参数变量还是类顶部声明的数据字段
this.name
指的是字段而不是参数
name
可以引用参数或字段。如果有一个(范围内)参数和一个同名字段,它将引用参数。因此,如果你写:
public void setId(int id){
id = id;
}
您只需将参数id
的值分配给自身即可。“修复”我的断开的setId
方法是使用this
或更改参数的名称;e、 g.使其成为newId
我在课堂上是否正确使用了this关键字
对。在完全没有必要的情况下,使用此
并非不正确。有些人会争辩说,这使意图更加明确。不管怎样,这都是一个风格决定
在我的getters中,我可以不使用这个返回变量吗
对
我想我的问题是this.variablename是指参数变量还是类顶部声明的数据字段
this.name
指的是字段而不是参数
name
可以引用参数或字段。如果有一个(范围内)参数和一个同名字段,它将引用参数。因此,如果你写:
public void setId(int id){
id = id;
}
您只需将参数
id
的值分配给自身即可。“修复”我的断开的setId
方法是使用this
或更改参数的名称;e、 g.让它成为newId
我使用的类比是,你正在编写的代码将是一个脚本,就像剧本一样,分发给所有演员(对象)。演员们都扮演不同的角色(比如班级),因此他们能够按照导演的要求做各种事情。所以当代码被执行时,通常是在某个实例的上下文中。您可以显式地告诉参与者使用关键字this(例如this.id)来引用自己
大多数情况下,您不需要使用关键字this,因为代码不会模棱两可(如果演员只说ID,我们都知道她在说什么)。但你有一个例子证明这是必要的;当您有与字段同名的局部变量/方法参数时,该变量称为字段的阴影。这很好!您只需要使用this.variable来引用字段,并使用variable来引用该上下文中的本地变量
在使用this调用对象自己的构造函数的过程中,您没有提到的另一个用法;“显式构造函数调用”。例如,您当前的空Account()方法可以包含语句this(100,0)代码>,以便使用两个参数调用另一个构造函数方法
来源:。我使用的类比是,你正在编写的代码将是一个脚本,就像剧本一样,分发给所有演员(对象)。演员们都扮演不同的角色(比如班级),因此他们能够按照导演的要求做各种事情。所以当代码被执行时,通常是在某个实例的上下文中。您可以显式地告诉参与者使用关键字this(例如this.id)来引用自己
大多数情况下,您不需要使用关键字this,因为代码不会模棱两可(如果演员只说ID,我们都知道她在说什么)。但你有一个例子证明这是必要的;当您有与字段同名的局部变量/方法参数时,该变量称为字段的阴影。这很好!您只需要使用this.variable来引用字段,并使用variable来引用该上下文中的本地变量
在使用this调用对象自己的构造函数的过程中,您没有提到的另一个用法;“显式构造函数调用”。例如,您当前的空Account()方法可以包含语句this(100,0)代码>,以便使用两个参数调用另一个构造函数方法
来源:。在getter中,您可以使用忽略此
,它仍然有效,因为没有同名的局部变量
您不应该使用此
访问静态变量。访问annualInterestate
的正确方法是首先指定类。例如:return((Account.annualinterestate/100)/12)*this.balance在getter中编码>