2016-04-01 12 views
1

コンストラクターが何であるかを理解するのは苦労していて、先生はあまり役に立ちません。コンストラクター、セッター、ゲッターもヘルパーメソッド

私は自分のコードの一部を含んでおり、これは従業員クラスです。私もメインクラスを持っています。私はコンストラクタを使用していると仮定して、割り当てを済ませて本当に自分の仕事を分担したくないので、それをすべて含めたくありません。

コンストラクタを使用していると誰かが指摘してくれることを期待していましたか?私はそれが馬鹿に聞こえることを知っているが、私はちょうどコンストラクタが何であるかは分からない。私はデフォルトを含まない3を使用するはずです。私はこのプログラムの2つのバージョンを、スキャナーとアレイ、そしてあらかじめ定義された配列で書きました。コンストラクターを使用していない場合は、コンストラクターをアドバイスしてください。彼らがどこにいるかを指摘しておけば、私は見ることができます。

私は本当にいくつかの助けに感謝します、事前に非常に感謝します。

また、ヘルパーメソッドとは何ですか?

public class Employee{ 

    String firstname = ""; 
    String lastname = ""; 
    String phone = ""; 
    String address = ""; 
    String id = ""; 
    String title = ""; 
    String salary = ""; 



    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    public String getPhone() { 
     return phone; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getSalary() { 
     return salary; 
    } 

    public void setSalary(String salary) { 
     this.salary = salary; 
    } 

    //-----------------------------------------------------------------------   
    //ToString Method 
    public String toString(){ 
     return "First Name:" + this.firstname + "\n" + 
       "Last Name:" + this.lastname + "\n" + 
       "Phone #: " + this.phone + "\n" + 
       "Address: " + this.address + "\n" + 
       "ID: " + this.id + "\n" + 
       "Title: " + this.title + "\n" + 
       "Salary: " + this.salary; 
    } 
    //-----------------------------------------------------------------------  
    //Equals method 
    public boolean equals (Employee other){ 
     return phone.equals(other.phone); 
    } 
    //------------------------------------------------------------------------  
     //Methods to change 

    public void changePhone(String newPhone) { 
     phone = newPhone; 
    } 
    public void changeId(String newId) { 
     id = newId; 
    } 
    public void changeTitle(String newTitle) { 
     title = newTitle; 
    } 
}  
+0

コンストラクターはクラスと同じ名前ですが、戻り値の型はありません。何も提供しない場合、デフォルトのコンストラクタは 'public Employee(){}' – haifzhan

+0

です。私はそれを恐れていました。戻り値の型は何を意味しますか? – jake

+0

スキャナを使用して入力配列と一緒に使うことができます – jake

答えて

3

コンストラクタは、クラスと同じ名前のメソッドです。 Employeeという名前のメソッドがないため、コンストラクタがありません。

異なる引数を持つコンストラクタを複数持つことができます。これはEmployeeクラスのコンストラクタは次のようになりますですので:

public class Employee { 
    // Default constructor, no arguments. 
    public Employee() { 
     ... 
    } 

    // Two argument constructor. 
    public Employee(String arg1, int arg2) { 
     ... 
    } 
} 

コンストラクタの目的は、オブジェクトを初期化することです。このクラスでは、すべてのフィールドを空白に設定する引数なしのコンストラクターと、ファーストネーム、ラストネームなどを引数とする複数引数のコンストラクターを作成してフィールドをそれらの値に初期化することができます。

コンストラクタにも戻り値の型がないことに注意してください。 public void Employee()は書いていません。ちょうどpublic Employee()です。コンストラクタはvoidを返す関数のように機能しますが、voidは書きません。コンストラクタの特殊な構文の一部です。

newを使用するとコンストラクタが呼び出されます。 newへの引数は、適切なコンストラクタに渡されます。たとえば、次の2つの異なる従業員オブジェクトを作成する際に上記の2つのコンストラクタを呼び出すことができます。

// Call the default constructor. 
Employee jack = new Employee(); 

// Call the two argument constructor. 
Employee jill = new Employee("Jill", 42); 

ヘルパーメソッドは、非公式な用語です。これは、他のコードから呼び出され、そのコードの一部をオフロードしてコードを "助ける"方法です。

手順をA; B; C; D; A; B; C;の順に実行しているとしましょう。それはちょっと繰り返しですね。手順A; B; C;をヘルパーメソッドに移動できます。Hとし、最初のメソッドをH(); D; H();と書き換えます。それはヘルパーの方法です。

+0

これを最後に理解すると、実際にコンストラクタを使用しているかどうかを調べる方法は?私のプログラムは完全に機能しています。私は3つのコンストラクタを実装する必要があります。 – jake

+0

@jakeは 'new'キーワードでオブジェクトを作成するときにコンストラクタを使用します。たとえば、 'Employee e = new Employee(); ' – haifzhan

1

私が見ることのできるコンストラクタは使用していません。 コンストラクトは、newオブジェクトを作成するときに呼び出されるオブジェクト関数です。これを使用して、デフォルト値を設定したり、パラメータを取得することができます。

class Car 
{ 
private String carName; 

public Car(String name) 
{ 
this.carName = name; 
} 


public void setCarName(String name) 
{ 
this.carName = name; 
} 

public String getCarName() 
{ 
return this.carName; 
} 

} 
1

あなたはgetters/settersを使用していますが、コンストラクタは使用していません。

あなたのクラスにこれを追加(だけでなく、すべてのフィールドを持つなどなどを置き換える:P):

public Employee(String firstname, String lastname, etc. etc.){ 
this.firstname = firstname; 
this.lastname = lastname; 
//same thing for other fields 
} 
+0

正確な並べ替え。 @jakeはデフォルト以外のコンストラクタを定義していませんが、クラスを使用している場合は必ずコンストラクタを使用しています。コンストラクタを定義していない場合は、デフォルトのコンストラクタであるJavaが作成されます。それで、あなたはまだこれを行うことができます:Employee someEmployee = new Employee()、デフォルト状態の従業員を作成します。 – Gremash

+0

さて、もし割り当てがコンストラクタを使っているのであれば、デフォルトのものを希望のリストから除外します。そうでなければ、彼のバージョンのようなsetter/getter POJOでさえOKです。 –

+0

はい、確かです。私はただ明確化していて、批判していませんでした。デフォルトのコンストラクタを理解することは重要です。 – Gremash

1

のコンストラクタは、あなたのクラスと同じ名前が、ノーリターンタイプを持っています。

public class Employee{ 

    String firstname = ""; 
    String lastname = ""; 
    String phone = ""; 
    String address = ""; 
    String id = ""; 
    String title = ""; 
    String salary = ""; 

    public Employee(){ 
     // default constructor 
    } 

    public Employee(String firstName, String lastName){ 
     // call another constructor 
     this(firstName, lastName, this.title); 
    } 

    public Employee(String firstName, String lastName, String title){ 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.title = title; 
    } 
} 

コンストラクタは、newキーワードでオブジェクトを作成するために使用されます。

Employee e1 = new Employee(); // no parameters, use all initialized values; 
Employee e2 = new Employee("Bill", "Gatz"); // 2 parameters, assign firstname and last name 
1

あなたのコードにはコンストラクタがありません。

コンストラクターは、コンストラクタに使用できる唯一の構文は

public class Employee{ 

public Employee(){ 
    //constructor 
} 

public Employee(String arg){ 
    //overloaded constructor that takes a string as argument 
} 

あるクラスが(すなわちキーワードnewを使用する場合)

をインスタンス化ノーリターンはありませんされるたびに呼び出される関数です親クラスと同じ名前を持たなければなりません(プライベートコンストラクタを持つこともできますが、ほとんど見つけることはできません)

最初のコンストラクタはwあなたはそれに引数を与えたときにhenever yoが

Employee employee = new Employee("Employee name"); 

Javaはあなたが

0

た場合を与えた引数に基づいて呼び出すためにどのコンストラクタ自動的に選択します(この例では、文字列で)

Employee employee = new Employee(); 

と第二を書きますオブジェクトが作成されます。Javaはコンストラクタを最初に呼び出します。これは、フィールド変数がprivateとマークされているため、値を持つオブジェクトを最初に作成する方法が必要です。

どのようなコンストラクタが対象であるか。彼らは彼らのクラスと同じ名前を持っています、彼らはあなたのクラスにコンストラクタがないことがわかる限り、戻り値の型はありません。

+0

なぜdownvoted?とても多くの下降者がいるので – haifzhan

+0

それは低品質、低労力の答えです。文法とスペルがクリーンアップされ、答えがもう少し具体化されれば、私はダウンボートを削除してうれしいでしょう。 –

+1

はいこれはインターネット上の偉大な深みで見つかる質問ですので、どうしてホイールを再発明するのですか? – JahShaka

関連する問題