Для домашней работы меня попросят выделить вложенный класс из основного класса.Доступ к созданному объекту из другого класса
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
This program displays the growth of an investment.
*/
public class InvestmentViewer2
{ public static void main(String[] args)
{
JFrame frame = new JFrame();
// The button to trigger the calculation
JButton button = new JButton("Add Interest");
// The application adds interest to this bank account
final BankAccount account = new BankAccount(INITIAL_BALANCE);
// The label for displaying the results
final JLabel label = new JLabel("balance: " + account.getBalance());
// The panel that holds the user interface components
JPanel panel = new JPanel();
panel.add(button);
panel.add(label);
frame.add(panel);
class AddInterestListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
double interest = account.getBalance()
* INTEREST_RATE/100;
account.deposit(interest);
label.setText(
"balance: " + account.getBalance());
}
}
ActionListener listener = new AddInterestListener();
button.addActionListener(listener);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static final double INTEREST_RATE = 10;
private static final double INITIAL_BALANCE = 1000;
private static final int FRAME_WIDTH = 400;
private static final int FRAME_HEIGHT = 100;
}
Я взял класс AddInterestListener из основного класса и поместил его в новый файл. Теперь account.getBalance() больше не работает. Я не могу найти способ, которым новый класс AddInterestListener должен указывать на объект учетной записи, который был создан в основном классе.
У меня также есть простой класс BankAccount, который создает объект. У этого есть 2 метода депозита (double x) и getBalance().
Есть подсказка на вопрос о домашнем задании: Храните ссылку на банковский счет. Добавьте конструктор в класс слушателя, который устанавливает ссылку.
Я не понимаю, что они говорят. Я попытался расширить класс, а затем использовать супер. чтобы достичь метода, но я застрял.
Где метод 'getBalance()' ? Я не вижу его в вашем классе нигде. –
Ну, если я попросил вас «сохранить ссылку» в классе, как бы вы это сделали? Разбивайте это требование шаг за шагом и обрабатывайте один шаг за раз. – markspace
Проблема, скорее всего, в том, что проблема слишком проста, и терминология вас сбивает с толку. По подсказке они говорят, что ваш основной класс должен быть слушателем, и он должен «Хранить ссылку на банковский счет», поэтому слушатель должен иметь строку типа «BankAccount bankAccount»; (Это ссылка), то в конструкторе слушателя он должен взять BankAccount в качестве параметра и сохранить его как «bankAccount», –