2016-04-01 4 views
1

Ich habe eine harte Zeit zu verstehen, was ein Konstruktor ist und mein Lehrer ist nicht sehr hilfreich.Konstruktoren, Setzer und Getter auch Helfer Methode

Ich habe einen Teil meines Codes enthalten und das ist die Mitarbeiterklasse. Ich habe auch eine Hauptklasse, die damit einhergeht. Ich möchte nicht alles einbeziehen, weil ich mit der Aufgabe ziemlich fertig bin, vorausgesetzt, ich benutze Konstruktoren und möchte meine Arbeit nicht wirklich teilen.

Ich hatte gehofft, jemand könnte darauf hinweisen, wenn ich Konstruktoren verwende? Ich weiß, es klingt albern, aber ich verstehe einfach nicht, was ein Konstruktor ist. Ich soll 3 verwenden, ohne den Standard zu verwenden. Ich habe 2 Versionen dieses Programms geschrieben, eines mit einem Scanner und einem Array und eines mit einem vordefinierten Array. Wenn ich keine Konstrukteure benutzt habe, rate bitte, was sie sind. Wenn ich bitte darauf hinweisen wo sie sind, kann ich sehen.

Ich würde wirklich etwas Hilfe schätzen, vielen Dank im Voraus.

Auch was ist eine Hilfsmethode?

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

Konstruktoren haben den gleichen Namen wie Ihre Klasse, aber keinen Rückgabetyp. Wenn Sie keine angeben, ist der Standardkonstruktor 'public Employee() {}' – haifzhan

+0

Ich hatte davor Angst. Was meinst du mit keinem Rückgabetyp? – jake

+0

können sie mit einem Input-Array mit einem Scanner verwendet werden – jake

Antwort

3

Ein Konstruktor ist eine Methode mit dem gleichen Namen wie die Klasse. Sie haben keine Methoden mit dem Namen Employee, daher haben Sie keine Konstruktoren.

Sie können mehrere Konstruktoren mit unterschiedlichen Argumenten verwenden. Da es sich um die Employee Klassenkonstruktoren aussehen würde:

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

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

Der Zweck eines Konstruktor ist ein Objekt zu initialisieren. Für diese Klasse könnten Sie einen Konstruktor ohne Argumente erstellen, der alle Felder auf Leerzeichen setzt, und ein Argument mit mehreren Argumenten, das den Vornamen, den Nachnamen usw. enthält und die Felder mit diesen Werten initialisiert.

Beachten Sie, wie die Konstruktoren auch keinen Rückgabetyp haben. Sie schreiben nicht public void Employee(), es ist nur public Employee(). Konstruktoren funktionieren wie Funktionen, die void zurückgeben, aber Sie schreiben die void nicht. Es ist Teil der speziellen Syntax für Konstruktoren.

Konstruktoren werden aufgerufen, wenn Sie new verwenden. Die Argumente zu new werden an den entsprechenden Konstruktor übergeben. Zum Beispiel könnten Sie die beiden Konstrukteure oben rufen bei der Erstellung von zwei verschiedenen Mitarbeiter-Objekte:

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

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

Eine Hilfsmethode ist ein informeller Begriff. Es ist eine Methode, die von anderem Code aufgerufen wird und diesem Code "hilft", indem sie einen Teil der Arbeit entlädt.

Nehmen wir an, Sie haben eine Methode, die die Schritte A; B; C; D; A; B; C; in dieser Reihenfolge ausführt. Das ist ein bisschen repetitiv, oder? Sie könnten die Schritte A; B; C; zu einer Hilfsmethode verschieben - nennen Sie sie H - und schreiben Sie dann die erste Methode als H(); D; H(); um. Das wäre eine Hilfsmethode.

+0

Wenn ich das endlich verstehe, wie würde ich testen, ob ich tatsächlich einen Konstruktor verwende? Mein Programm ist voll funktionsfähig Ich muss nur 3 Konstruktoren implementieren. – jake

+0

@jake verwenden Konstruktor, wenn Sie ein Objekt mit 'new' Schlüsselwort erstellen. Zum Beispiel, 'Mitarbeiter e = neuer Mitarbeiter();' – haifzhan

1

Sie verwenden keine Konstruktoren von dem, was ich sehen kann. Ein Konstrukt ist eine Objektfunktion, die beim Erstellen eines Objekts new aufgerufen wird. Sie können dies verwenden, um Standardwerte festzulegen oder einen Parameter zu übernehmen.

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

Sir, Sie verwenden Getter/Setter, aber keine Konstrukteure.

Fügen Sie diese auf Ihre Klasse (gut ersetzen etc. etc. mit allen Bereichen: P):

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

Art von genau. @jake hat keinen Nicht-Standard-Konstruktor definiert, verwendet aber sicherlich einen Konstruktor, wenn er seine Klasse verwendet. Wenn Sie keinen Konstruktor definieren, erstellt Java einen für Sie, den Standardkonstruktor. Daher können Sie dies auch weiterhin tun: Mitarbeiter someEmployee = new Employee(), erstellen Sie einen Mitarbeiter mit dem Standardstatus; – Gremash

+0

Nun, wenn die Aufgabe war, Konstruktoren zu verwenden, werde ich den Standard aus der Fahndungsliste ausschließen, sonst wird sogar ein Setter/Getter POJO wie seine Version in Ordnung sein. –

+0

Ja, sicher. Ich habe nur geklärt und nicht kritisiert. Das Verständnis des Standardkonstruktors ist wichtig. – Gremash

1

Konstrukteurs die identischen Namen mit Ihrer Klasse hat aber keinen Rückgabetyp.

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; 
    } 
} 

Konstrukteuren sind für die Erstellung von Objekten mit new Schlüsselwörter verwendet.

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

In Ihrem Stück Code gibt es keinen Konstruktor.

Der Konstruktor ist eine Funktion, die, wenn eine Klasse genannt wird, ist instanziiert (dh, wenn Sie das Schlüsselwort new verwenden)

Die einzige Syntax für einen Konstruktor erlaubt

ist
public class Employee{ 

public Employee(){ 
    //constructor 
} 

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

Es gibt keine Rückkehr type und es muss denselben Namen haben wie die Elternklasse (Sie können auch private Konstruktoren haben, aber Sie werden sie selten finden)

Der erste Konstruktor heißt w enn schreiben yo

Employee employee = new Employee(); 

und die zweite, wenn Sie Argumente, um es (in diesem Beispiel strings) geben

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

Java wählt automatisch die Konstruktor auf die Argumente, die Sie

0

geben basiert zu rufen, wenn ein Objekt wird erstellt Java ruft den Konstruktor zuerst auf, da Ihre Feldvariablen als privat gekennzeichnet sind, muss es möglich sein, ein Objekt anfänglich mit Werten zu erstellen.

Also das ist, was Konstruktoren sind. Sie haben den gleichen Namen wie ihre Klasse, sie haben keinen Rückgabetyp

soweit ich sehen kann, haben Sie keinen Konstruktor in Ihrer Klasse.

+0

warum downvoted?so viele Downwoters in SO – haifzhan

+0

Es ist eine niedrige Qualität, geringe Mühe Antwort. Ich würde froh sein, meinen Downvote zu entfernen, wenn die Grammatik und die Rechtschreibung aufgeräumt sind und die Antwort mehr ausgearbeitet wird. –

+1

Ja, bitte, das ist eine Frage, die überall im Internet in großer Tiefe zu finden ist, also warum das Rad neu erfinden? – JahShaka