Java 无法从静态上下文问题引用非静态变量
在这段代码中,我需要创建扩展类basicaccount的对象,但我得到错误消息“非静态变量不能从静态上下文引用”,我能做得更好吗Java 无法从静态上下文问题引用非静态变量,java,Java,在这段代码中,我需要创建扩展类basicaccount的对象,但我得到错误消息“非静态变量不能从静态上下文引用”,我能做得更好吗 public class BankAccount { private double balance; public BankAccount() { balance = 0; } public BankAccount(double initialBalance) { balance = initialBalance; } pu
public class BankAccount {
private double balance;
public BankAccount() {
balance = 0;
}
public BankAccount(double initialBalance) {
balance = initialBalance;
}
public void deposit(double amount) {
double newBalance = balance + amount;
balance = newBalance;
}
public void withdraw(double amount) {
double newBalance = balance - amount;
balance = newBalance;
}
public double getBalance() {
return balance;
}
class BasicAccount extends BankAccount {
public BasicAccount(Double d) {
balance = d;
}
}
class Main {
public static void main(String args[]) {
BankAccount account = new BasicAccount(100.00);
double balance = account.getBalance(); //expected 100.00;
account.withdraw(80.00);
balance = account.getBalance(); //expected 20.00;
account.withdraw(50.00);
balance = account.getBalance(); //expected 20.00 because the amount to withdraw is larger than the balance
}
}
}
您似乎已将您的
BasicAccount
类放在BankAccount
类中,使其成为一个内部类。这意味着如果没有现有的BankAccount
实例,就无法实例化BasicAccount
你可能不想那样做。我建议您在理解效果之前,避免将类放在其他类中
将BasicAccount
和Main
类移动到BankAccount
类定义之外。如果没有封装的BankAccount
对象,则无法实例化非静态嵌套类(BasicAccount
和Main
)。要实例化BasicAccount
您需要在现有BankAccount
对象上调用newbasicaccount(…)
BankAccount account = new BankAccount().new BasicAccount(0);
然而,我认为您可能不希望这样-如果是这样的话,我认为您应该将BasicAccount
和Main
从内部BankAccount
static main(String[]args)
在main
public类中class BankAccount {
private double balance;
public BankAccount() {
balance = 0;
}
public BankAccount(double initialBalance) {
balance = initialBalance;
}
public void deposit(double amount) {
double newBalance = balance + amount;
balance = newBalance;
}
public void withdraw(double amount) {
double newBalance = balance - amount;
balance = newBalance;
}
public double getBalance() {
return balance;
}
class BasicAccount extends BankAccount {
public BasicAccount(Double d) {
balance = d;
}
}
}
public class Main {
public static void main(String args[]) {
BankAccount account = new BasicAccount(100.00);
double balance = account.getBalance(); // expected 100.00;
account.withdraw(80.00);
balance = account.getBalance(); // expected 20.00;
account.withdraw(50.00);
balance = account.getBalance(); // expected 20.00 because the amount to withdraw is larger than the balance
}
}
你能在有警告的地方标出行吗?你好像把你的
BasicAccount
类放在你的BankAccount
类里面,使它成为一个内部类。这意味着如果没有现有的BankAccount
实例,就无法实例化BasicAccount
。你可能不想那样做。在你知道自己在做什么之前,避免把类放在其他类中。这能回答你的问题吗?