这是我第二次使用它,也是我第一次得到非常好的帮助,所以我希望我能得到更多的帮助!
背景:
我的程序通过创建一个保存余额和其他东西的对象来测试我的 Account
类。说明说我需要覆盖子类的“提款”和“存款”方法以跟踪交易。
我这样做了,但它不使用当前余额,而是只发送一个0。我希望能够保留新的余额,以便它实际从当前余额中提取或存款。
抱歉,如果这毫无意义,如果需要任何澄清,我将尝试以不同的方式解释。
以下是我的代码片段:
注意:我保留了与此无关的已经工作的东西(构造函数和其他方法):
账户.java
public class Account
{
private static double balance;
public void Withdraw(double withdrawAmount)
{
this.balance -= withdrawAmount;
}
public void Deposit(double depositAmount)
{
this.balance += depositAmount;
}
}
UserAccount.java
public class UserAccount extends Account
{
private ArrayList<Transactions> transactions = new ArrayList();
@Override
public void Withdraw(double withdrawAmount)
{
super.Withdraw(withdrawAmount);
Transactions thisTransaction = new Transactions('W',
withdrawAmount, this.AccBalance(), "Withdraw");
this.transactions.add(thisTransaction);
}
@Override
public void Deposit(double depositAmount)
{
super.Deposit(depositAmount);
Transactions thisTransaction = new Transactions('D',
depositAmount, this.AccBalance(), "Deposit");
this.transactions.add(thisTransaction);
}
public void fillTransactions(char type, double amount, double balance)
{
switch (type) {
case 'D':
this.Deposit(amount);
break;
case 'W':
this.Withdraw(amount);
break;
default:
System.out.println("ERROR fillTransactions");
break;
}
}
public static void main(String[] args) {
ArrayList<Transactions> copyTransactions;
UserAccount thisAccount = new UserAccount("George", 1122, 1000);
thisAccount.MutAIR(.015);
thisAccount.fillTransactions('D', 30, thisAccount.AccBalance());
thisAccount.fillTransactions('D', 40, thisAccount.AccBalance());
thisAccount.fillTransactions('D', 50, thisAccount.AccBalance());
thisAccount.fillTransactions('W', 5, thisAccount.AccBalance());
thisAccount.fillTransactions('W', 4, thisAccount.AccBalance());
thisAccount.fillTransactions('W', 2, thisAccount.AccBalance());
}
我拥有的Transactions
类保存类型(取款或存款)、取款或存款金额以及余额。当我从重写的存款或取款方法调用超级类时,它会将余额设置为0,这样当我希望使用存款或取款货币的原始余额时,它就会显示余额为50、40或-5。
如果有人能帮忙,那就太神奇了!如果有什么困惑,我可以澄清!谢谢大家!
嘿,我认为你没有在UserAccount的构造函数中设置平衡。< br >下面是一个设置变量的示例,假设A类为Account,B类为UserAccount
class A {
private double balance;// Don't use static
public A(double balance) {// You will need this
this.balance = balance;
}
public double getBalance() { return balance; }
}
class B extends A {
public B(double balance) {
super(balance);//Important
}
public void d() { System.out.println(getBalance()); }
}
public class Main {
public static void main(String args[]) {
B b = new B(100.0);
b.d();
}
}
如果您在超类中使用静态平衡,那么只有一个实例将用于所有对象,因为我猜您希望每个用户帐户都有单独的平衡。
我有一个基类,它定义了类方法,用于返回用于构建服务url的各种信息。基类还定义了一个用于构建该url的实例方法。我希望基类有这个方法的默认实现,这样当我需要url不同时,我只需要在子类中重写它。我如何让这个基方法调用重写的类方法来使用子类中的类方法构建url?下面是我现在的代码,但它不起作用: 基类方法: op ationId、operationVersion和方法类型是在子类中实现的类方法,但是
问题内容: 我有一个父类A,及其子B。两者都具有带有diff类型参数的方法。 A级 B级 运行此命令时,将获得“ Base impl:override”作为输出! 指向的对象,而他经过的说法是,所以不应该调用它的方法是什么? 问题答案: 当您使用类型A的引用时,您只会看到为类A定义的方法。由于B中不会覆盖B(因为它具有不同的签名),因此不会调用它。 如果要使用类型B的引用,则两种方法都将可用,并且
我有一个主类。应用程序中有许多子类是从类扩展而来的。base类公开公共方法,如下所示: 应用程序将在子实例上调用以获得一个检查器实例。每个子类都可以有自定义的基本检查器和验证检查器。他们可以使用和方法实现它,但是他们不能覆盖基类的,因为它包含处理逻辑。 在这里使用关键字合适吗?
为什么我的子类方法不重写其父类中相同签名的方法? 我有一个类,它扩展了一个抽象类,后者扩展了抽象类Actor(这里的上下文是一个pong游戏)。和都有一个具有相同签名的方法: 目的是让方法重写的方法。这里的问题是,当我在内部调用时,只调用的方法。 在中的上设置的断点会脱扣,而在中的上设置的断点从不脱扣。我还在方法上尝试了,但它仍然调用方法。 目标是让对象以与其他对象不同的速度上下移动。因此方法也会
问题内容: 我在扩展基类并覆盖基类中的方法。但是当我称它为超类版本时。如何覆盖该方法? 我希望它打印“这是:孩子”,但它打印“这是:超级” 问题答案: 我找到了答案(从这里改编:https : //gist.github.com/Zodiase/af44115098b20d69c531)-基类也需要以ES6方式定义:
这是一个与实现相关的问题,或者我可能想多了。假设我有一个子类继承了父类。根据我的理解,它将继承父类的方法定义,而不是构造函数。我们需要通过超级方法调用提供或编译器将提供构造函数。我们这样做的原因是,如果没有父类对象实例,我们从子类中的父类获得的方法定义将不存在。 这是否意味着,当我调用父类对象定义的方法(该方法尚未在子类中重写)时,将在父对象实例的子类内部调用?我在想,由于子类会调用父类构造函数并