2012-03-21 11 views
0

私は宿題に取り組んでいますが、完全なコードを投稿することはしませんが、私はおそらく単純なものに固執していますし、私の本で見つけることができないので、正しい方向。 私はクラスとインターフェイスで作業しています。別のクラスのインスタンス変数

は基本的に私のメインのコードで私はCheckingAccountというクラスを作成し、そのクラスで私は聞いていますと言われました。この

CheckingAccount checking = new CheckingAccount(1.0); // $1 monthly fee 

のようなラインを持っている「このクラスは、月額料金のためのインスタンス変数を含める必要がありますそれは、コンストラクタに渡された値に初期化されます。

私は新たなんだので、これは私にはほとんど英語であり、私はそれを言っていると仮定していること1.00の手数料を取り、CheckingAccountクラスでそれを宣言することですので、私その変数を使用して何かを計算するメソッドを作成できます。

soooo ...どうすればいいですか?私はインスタンス変数を作成する方法を知っています。

public double monthly fee = 

それでは何ですか?または私は間違っている可能性があります。私は本当にこのJavaのもので悪いやっている。どんな助けもありがとうございます。

もう1つの方法は、私はそれを1.0と宣言していますか?または、後である時点で変更する場合はその値を「インポート」していますか?すべてのクラスでコードを変更する必要はありませんか?

+0

FWIWを、あなたのための便利なページがhttp://docs.oracleかもしれません。 com/javase/tutorial/java/javaOO/classvars.html –

答えて

3

私が読んだところでは、コンストラクタのインスタンス変数を初期化する必要があり、インスタンス化(new CheckingAccount(1.0);)は正しいトラックにいることを示します。

クラスに必要なのは、その値を受け取り、設定するコンストラクタメソッドです。1.0

// Instance var declaration 
private double monthly_fee; 

// Constructor receives a double as its only param and sets the member variable 
public CheckingAccount(double initial_monthly_fee) { 
    monthly_fee = inital_monthly_fee; 
} 
3

@Jeremy:

あなたは(少なくとも、あなたがするように頼まれてきたもののあなたの解釈が私の解釈と一致する)にかなりのスポットです。私はクラスの実際の設計を知らない、またはmonthly_feeはパブリックにする必要があるかどうか、擬似コードであなたのようなものを見ていると思いながら:

class CheckingAccount { 
    //Instance variable 
    double monthly_fee;  
    //Constructor 
    CheckingAccount(double monthly_fee) { 
      this.monthly_fee = monthly_fee; 
    }  
    //Function to multiply instance variable by some multiplier 
    //Arguments: Value to multiply the monthly fee by 
    double multiply_fee(double a_multiplier) { 
      return monthly_fee*a_multiplier; 
    } 
} 
+0

Javaの質問のC++ですか?そしてコンストラクタにはバグがあります。 – Jochen

+1

私は擬似コードではなく、C++と言いました。私はちょうど答えのためのC + +のような構文を使用して起こった[しかし、感謝、私は "バグ"を修正する] – jonathanl

0

パブリックとしてインスタンス変数をを作成しないでください。情報隠蔽の原則(あなたの先生がこの抽象と呼ぶかもしれません)に違反するので、悪い習慣です。代わりに、あなたはそれがスペースが含まれているためmonthly feeが有効な変数名ではないことを

public final class CheckingAccount { 
    private double monthlyFee; 

    // The rest of the class goes here 

    public double getMonthlyFee() { // This method is called an accessor for monthlyFee 
     return monthlyFee; 
    } 
} 

注意として、インスタンス変数を作成することができ、および変数名はスペースを含めることはできません。また、他のクラスがメソッドを介してmonthlyFeeにアクセスすることに注意してください。変数をパブリックにするのではなく、メソッドを定義するので、monthlyFeeへのアクセスをもっとコントロールできます(別のクラスでは、変更するメソッドを定義しない限り、monthlyFeeを変更できません)。

今すぐアクセスするmonthlyFeegetMonthlyFeeというメソッドは、アクセッサーと呼ばれています。その理由は、他のクラスがその変数にアクセスできるようにするためです。だから、それらの他のクラスはちょうどCheckingAccountのうち、月額料金を取得するメソッドを呼び出すことができます。

CheckingAccount checking = new CheckingAccount(1.0); 
// A bunch of other code can go here 
double fee = checking.getMonthlyFee(); // Now fee is 1.0 
2

あなたは基本的に正しいです。あなたがまだの場合は、あなたがこのような新しいクラス(それはCheckingAccountと呼ばれるそれ自身のファイルにする必要があります)を作成する必要があります

/** This is the class of Account with monthly fee. */ 
public class CheckingAccount { 
    // This is the instance variable. 
    // It should be 'private' for reasons you will surely learn soon. 
    // And NOT static, since that would be a class variable, not an instance one. 
    // The capitalization is called camelCase, google it up. Or, even better, find 'JavaBeans naming conventions' 
    private double monthlyFee; 

    // This is the constructor. It is called when you create the account. 
    // It takes one parameter, the fee, which initializes our instance variable. 
    // Keyword 'this' means 'this instance, this object'. 
    public CheckingAccount(double monthlyFee) { 
     this.monthlyFee = monthlyFee; 
    } 

    // Here will be your methods to calculate something... 
} 
関連する問題