在使用 setter 和 getter 方面需要帮助
Need help using setters and getters
我对 setter 和 getter 很陌生。我正在开发一个简单的程序来尝试更好地使用它们。我有两个 classes,我想做的就是为一个随机的人开一个账户,设置余额并从 it.I 中退出不要认为我使用了 setters 和 getters,如果有人可以引导我朝着正确的方向前进,我将不胜感激。
package SetterGettersPractice;
public class account {
private String name;
public double balance =0;
public double withdraw;
public double deposit;
public double getDeposit() {
return deposit;
}
public void setDeposit(double deposit) {
this.deposit = deposit;
}
public account(String name, double d){
this.name = name;
this.balance = d;
}
private double sumDeposits(){
balance = balance + deposit;
return balance;
}
private double sumWithdrawals(){
balance = balance - withdraw;
return balance;
}
public double getwithdraw() {
return withdraw;
}
public void setwithdraw(double withdraw) {
this.withdraw = withdraw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String toString(){
return "Name="+name+" balance="+balance;
}
}
这是我的另一个class
package SettersGettersPractice;
public class testAccount {
public static void test1(){
account a = new account("John Doe", 100);
a.withdraw(10.0);
System.out.print("Balance %d", balance);
}
}
如您所见,我计划在弄清楚自己在做什么后尝试扩展该程序。任何帮助新手的建议都很棒!
将数据成员设为私有,就可以了。此外,您可能希望更好地设置代码格式 - 惯例说 class 名称应大写:Account
vs account
.
方法 setwithdraw
不应该是 setter。它包含更高级的逻辑,所以我宁愿称它为withdraw
。
你的 class 没有任何名为 withdraw
的方法 在你的测试方法中也没有变量名 balance
.
我会调用我在 class 中定义的方法来正确设置和获取如下值
package SettersGettersPractice;
public class testAccount {
public static void test1(){
account a = new account("John Doe", 100);
a.setwithdraw(10.0);
System.out.print("Balance %d", a.sumWithdrawals());
}
}
虽然上面的代码可以给我预期的输出,但我会考虑将我的 class 重命名为帐户(命名约定),我也会将 setwithdraw
重命名为 withdraw
和 sumWithdrawals
到 getBalance
基于它们实现的功能。我建议您阅读 Basics of java,其中包括命名约定、代码约定等,然后开始编码。
为什么 getters 和 setters?
您使用得相当正确,但有一些错误。 Getters 和 setters 旨在提供数据的封装。
例如,假设您有一个 "Dog" class,它有一个 "weight" 变量
public class Dog {
int weight;
}
目前,您可以创建 Dog 对象的新实例,并像这样编辑它的权重变量:
Dog dog = new Dog();
dog.weight = 45;
虽然合乎逻辑,但这种做法可能会设置错误的值,可能会搞乱整个程序。例如,使用此设置,有人可以将权重变量设置为负数,这是没有意义的
dog.weight = -50;
如何创建setter方法?
为防止这种情况发生,您可以将 Dog 中的权重变量设为 class private 而不是 public.
public class Dog {
private int weight;
}
现在,如果您尝试从 class 外部访问该变量,它将被阻止。
dog.weight = 45; // would result in an error
那么,如何让他们再次访问它,而不是提供错误的值?你用 setter!
封装它的数据
public class Dog {
private int weight;
public void setWeight(int i) {
this.weight = i;
}
}
如何用setter封装(保护你的数据)?
这是创建一个setter。但为确保其数据正确,您需要执行以下操作:
public class Dog {
int weight;
public void setWeight(int i) {
if (i > 0) {
this.weight = i;
} else {
System.out.println("A dog can't have negative weight!");
}
}
}
如何创建getter方法?
并且,由于此数据是私有的,这意味着他们无法以任何方式使用它,甚至无法显示它,因此要从对象中检索此变量的值,您将创建一个 getter 方法。
public int getWeight() {
return weight;
}
如何在您的代码中 use/fire getter 和 setter?
现在要使用这些 getter 和 setter 更改 "Dog" 对象的变量,您可以这样做:
Dog dog = new Dog();
dog.setWeight(45);
System.out.println(dog.getWeight());
如果您还有其他问题,请在评论中提问,我一定会解释的!
如果你想使用 getter 和 setter,你的代码应该像这样 运行 所以:
account a = new account("John Doe", 100);
a.setBalance(10.0);
System.out.print(a.getBalance);
就这么简单:)
P.S。 Class 名字总是以大首字母开头!
我对 setter 和 getter 很陌生。我正在开发一个简单的程序来尝试更好地使用它们。我有两个 classes,我想做的就是为一个随机的人开一个账户,设置余额并从 it.I 中退出不要认为我使用了 setters 和 getters,如果有人可以引导我朝着正确的方向前进,我将不胜感激。
package SetterGettersPractice;
public class account {
private String name;
public double balance =0;
public double withdraw;
public double deposit;
public double getDeposit() {
return deposit;
}
public void setDeposit(double deposit) {
this.deposit = deposit;
}
public account(String name, double d){
this.name = name;
this.balance = d;
}
private double sumDeposits(){
balance = balance + deposit;
return balance;
}
private double sumWithdrawals(){
balance = balance - withdraw;
return balance;
}
public double getwithdraw() {
return withdraw;
}
public void setwithdraw(double withdraw) {
this.withdraw = withdraw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String toString(){
return "Name="+name+" balance="+balance;
}
}
这是我的另一个class
package SettersGettersPractice;
public class testAccount {
public static void test1(){
account a = new account("John Doe", 100);
a.withdraw(10.0);
System.out.print("Balance %d", balance);
}
}
如您所见,我计划在弄清楚自己在做什么后尝试扩展该程序。任何帮助新手的建议都很棒!
将数据成员设为私有,就可以了。此外,您可能希望更好地设置代码格式 - 惯例说 class 名称应大写:Account
vs account
.
方法 setwithdraw
不应该是 setter。它包含更高级的逻辑,所以我宁愿称它为withdraw
。
你的 class 没有任何名为 withdraw
的方法 在你的测试方法中也没有变量名 balance
.
我会调用我在 class 中定义的方法来正确设置和获取如下值
package SettersGettersPractice;
public class testAccount {
public static void test1(){
account a = new account("John Doe", 100);
a.setwithdraw(10.0);
System.out.print("Balance %d", a.sumWithdrawals());
}
}
虽然上面的代码可以给我预期的输出,但我会考虑将我的 class 重命名为帐户(命名约定),我也会将 setwithdraw
重命名为 withdraw
和 sumWithdrawals
到 getBalance
基于它们实现的功能。我建议您阅读 Basics of java,其中包括命名约定、代码约定等,然后开始编码。
为什么 getters 和 setters?
您使用得相当正确,但有一些错误。 Getters 和 setters 旨在提供数据的封装。
例如,假设您有一个 "Dog" class,它有一个 "weight" 变量
public class Dog {
int weight;
}
目前,您可以创建 Dog 对象的新实例,并像这样编辑它的权重变量:
Dog dog = new Dog();
dog.weight = 45;
虽然合乎逻辑,但这种做法可能会设置错误的值,可能会搞乱整个程序。例如,使用此设置,有人可以将权重变量设置为负数,这是没有意义的
dog.weight = -50;
如何创建setter方法?
为防止这种情况发生,您可以将 Dog 中的权重变量设为 class private 而不是 public.
public class Dog {
private int weight;
}
现在,如果您尝试从 class 外部访问该变量,它将被阻止。
dog.weight = 45; // would result in an error
那么,如何让他们再次访问它,而不是提供错误的值?你用 setter!
封装它的数据public class Dog {
private int weight;
public void setWeight(int i) {
this.weight = i;
}
}
如何用setter封装(保护你的数据)?
这是创建一个setter。但为确保其数据正确,您需要执行以下操作:
public class Dog {
int weight;
public void setWeight(int i) {
if (i > 0) {
this.weight = i;
} else {
System.out.println("A dog can't have negative weight!");
}
}
}
如何创建getter方法?
并且,由于此数据是私有的,这意味着他们无法以任何方式使用它,甚至无法显示它,因此要从对象中检索此变量的值,您将创建一个 getter 方法。
public int getWeight() {
return weight;
}
如何在您的代码中 use/fire getter 和 setter?
现在要使用这些 getter 和 setter 更改 "Dog" 对象的变量,您可以这样做:
Dog dog = new Dog();
dog.setWeight(45);
System.out.println(dog.getWeight());
如果您还有其他问题,请在评论中提问,我一定会解释的!
如果你想使用 getter 和 setter,你的代码应该像这样 运行 所以:
account a = new account("John Doe", 100);
a.setBalance(10.0);
System.out.print(a.getBalance);
就这么简单:)
P.S。 Class 名字总是以大首字母开头!