2013-04-29 4 views
0

불변의 메소드를 읽으려고했으나 여전히 이해할 수 없습니다. BankAccount 클래스의 메소드를 변경 가능하게하려면 어떻게해야합니까?불변의 메소드를 만들기 위해이 클래스를 어떻게 바꿀 수 있습니까?

public class BankAccount 
{ 
    private double balance; 

    public BankAccount() 
    { 
    balance = 0; 
    } 

    public BankAccount(double initialBalance) 
    { 
    balance = initialBalance; 
    } 

    public void deposit(double amount) 
    { 
    balance = balance + amount; 
    } 

    public void withdraw(double amount) 
    { 
    balance = balance - amount; 
    } 

    public double getBalance() 
    { 
    return balance; 
    } 
} 

답변

0

자바에는 const 한정자가 없습니다. 컴파일러에게 "getBalance()"메소드가 클래스를 수정하지 않는다고 말할 수는 없습니다.

클래스 자체는 변경자 메서드가 포함되어 있으므로 변경할 수 없습니다. 그리고 BankAccount를 수정하는 것이 좋습니다. 객체의 수비 사본을 수신 반환 만들기 최종 클래스

  • 을 표시
  • 최종 필드를 표시
  • 수식 방법을 제거

    • : 당신이 불변하는 인스턴스를 원한다면, 당신은에 의해 그렇게 할 수 . 이 경우 수신되거나 반송 된 물체가 없습니다.
  • +0

    참조. 당신이 그 중 하나에 대한 모범을 보여줌으로써 조금 더 잘 이해할 수 있습니까? – user2330350

    +0

    다음은 두 가지입니다. public final class BankAccount { private final double balance; –