2015-12-01 3 views
1

Для домашней работы меня попросят выделить вложенный класс из основного класса.Доступ к созданному объекту из другого класса

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().

Есть подсказка на вопрос о домашнем задании: Храните ссылку на банковский счет. Добавьте конструктор в класс слушателя, который устанавливает ссылку.

Я не понимаю, что они говорят. Я попытался расширить класс, а затем использовать супер. чтобы достичь метода, но я застрял.

+0

Где метод 'getBalance()' ? Я не вижу его в вашем классе нигде. –

+0

Ну, если я попросил вас «сохранить ссылку» в классе, как бы вы это сделали? Разбивайте это требование шаг за шагом и обрабатывайте один шаг за раз. – markspace

+1

Проблема, скорее всего, в том, что проблема слишком проста, и терминология вас сбивает с толку. По подсказке они говорят, что ваш основной класс должен быть слушателем, и он должен «Хранить ссылку на банковский счет», поэтому слушатель должен иметь строку типа «BankAccount bankAccount»; (Это ссылка), то в конструкторе слушателя он должен взять BankAccount в качестве параметра и сохранить его как «bankAccount», –

ответ

1

Вам нужно создать конструктор по AddInterestListener, передайте объект учетной записи в качестве параметра и сохранили его в поле на классе AddInterestListener ...

public class AddInterestListener implements ActionListener { 
    private final Account account; 

    public AddInterestListener(final Account account) { 
     this.account = account; 
    } 

    public void actionPerformed(Event e) { 
     ... 
      account.deposit(interest); 
     ... 
    } 
} 
Смежные вопросы