0

それで、私は宿題の課題に取り組んでいます、そして私はいくつかの指示に従うのに苦労しています、私は以下の課題を貼り付けました:

5つのクラスの階層に加えて、内部に変数として含まれる1つのクラスを作成します。

  1. 人には4つの文字列変数があります:名前、住所、電話、電子メール
  2. StudentはPersonのサブクラスであり、1、2、3、または4の値をとる1つの追加のint変数ステータスがあり、新入生、2年生、ジュニア、シニアを表します。
  3. MyDateには、年、月、日の3つのint変数があります
  4. EmployeeはPersonのサブクラスであり、1つのString変数office、salary用の1つのint変数、およびdateHired用の1つのMyDate変数があります。
  5. StaffはEmployeeのサブクラスであり、タイトル用に1つの追加のString変数があります
  6. FacultyはEmployeeのサブクラスであり、Professor、Associate Professor、Assistant Professor、Instructor、およびAdjunctの値をとるランク用の追加のString変数が1つあります。6つのクラスすべてのデータはプライベートである必要があります。

メソッドに関しては、すべてのデータのパラメーターを持つ単一のコンストラクターを記述し、toString()メソッドをオーバーライドすると、通常のセッターとゲッターをスキップできます。サブクラスのコンストラクターは、スーパークラスコンストラクターを使用する必要があります。サブクラスのtoString()メソッドは、スーパークラスのtoString()メソッドを使用する必要があります。

私をループに陥らせる部分は、各サブクラスに書き込む代わりに、セッターとゲッターに必要なすべてのパラメーターをカバーする単一のコンストラクターを作成できるという考えです。これは可能ですか?そして、どのように?

4

4 に答える 4

3

サブクラスを作成するときは、スーパークラスのコンストラクターを使用する必要があります。したがって、次のようになります。

public class Staff extends Employee {    

    private String title;    

    public Staff(String name, String address, String phone, String email, int status, String title) {
        super(name, address, phone, email, status);
        this.title = title;
    }    
}

を使用しsuper(/*params of super class*/)てスーパークラスのコンストラクターを呼び出し、継承された属性をインスタンス化します。スーパークラスコンストラクターは、コンストラクターの最初のステートメントとしてのみ呼び出すことができることに注意してください。スーパークラスコンストラクターを明示的に呼び出さない場合、super()(スーパークラスのデフォルトコンストラクター)の呼び出しは、Javaコンパイラーによって自動的に挿入されます。

親クラスのtoString()を呼び出すには、次を使用します。

public String toString() {
    return super.toString() + " ,title : " this.title;    
}

同様に、すべてのクラスのコンストラクターとtoString()メソッドを記述します。

于 2012-10-19T04:39:58.597 に答える
1

メソッドに関しては、すべてのデータのパラメーターを持つ単一のコンストラクターを記述し、toString()メソッドをオーバーライドすると、通常のセッターとゲッターをスキップできます。

指示は、作成する各クラスが、そのすべてのデータのパラメーターを受け取る単一のコンストラクターを持つことができることを意味していると思います。MyDateコンストラクターを例にとると:

public MyDate(int year, int month, int day) {
    ...
}

同様に、オーバーライドtoString()してすべての情報を報告します。

于 2012-10-19T04:31:27.283 に答える
1

書く代わりに

 public class A {
   private int b;
   private int c;

   public void setB(int b) {this.b = b;}
   public int getB() {return b;}

   // same for c
}

あなたはコーディングを許可しました

 public class A {
   private int b;
   private int c;

   public A(int b, int c) {
     this.b = b;
     this.c = c;
   }

   @Override
   public String toString() {
     return "[b = " + b + ", c = " + c + "]";
}

(の実装toString()は単なる例であり、すべてのフィールドの状態を出力する必要があります)

于 2012-10-19T04:33:20.073 に答える
0

これがあなたにできることです

Person(String name,String address,String phone,String email){
 //Person constructor
 this.name = name;
 this.address = address;
 this.phone = phone;
 this.email = email;
}

public String toString(){
//toString method
return "Name: "+name+" Address: "+address+" Phone: "+phone+" Email: "+email;
}
于 2012-10-19T04:33:24.347 に答える