2010-12-06 17 views
1

Ich muss eine Methode mit einem Standardkonstruktor erstellen, der name auf eine leere Zeichenfolge setzt und beide credits und contactHours auf Null setzt. Wie es geht? Danke, Pieter.Erstellen Sie einen Standardkonstruktor in Java

+2

Methoden haben keine Konstrukteure. Angenommen, Sie meinen eine Klasse, dann lesen Sie die Dokumentation. Dies ist sicherlich eine Aufgabe –

+1

Verdammt ... Solch ein Standard-Konstruktor riecht Mutabilität :( – SyntaxT3rr0r

Antwort

10

Methoden haben keine Konstruktoren ... Klassen tun. Zum Beispiel:

public class Dummy 
{ 
    private int credits; 
    private int contactHours; 
    private String name; 

    public Dummy() 
    { 
     name = ""; 
     credits = 0; 
     contactHours = 0; 
    } 

    // More stuff here, e.g. property accessors 
} 

Sie nicht wirklich haben credits oder contactHours zu setzen, wie die int Typ automatisch auf 0 für Felder sowieso.

Du bist wahrscheinlich mindestens einen Konstruktor wollen, die Anfangswerte nimmt - in diesem Fall Ihre parameterlos man, dass delegieren kann:

public class Dummy 
{ 
    private String name; 
    private int credits; 
    private int contactHours; 

    public Dummy() 
    { 
     this("", 0, 0); 
    } 

    public Dummy(String name, int credits, int contactHours) 
    { 
     this.name = name; 
     this.credits = credits; 
     this.contactHours = contactHours; 
    } 

    // More stuff here, e.g. property accessors 
} 
+0

Es ist String nicht Zeichenfolge –

+0

@cketbach: Whoops, habe zu viel C# getan ... –

+0

Und können wir nicht die Felder endgültig machen, jetzt das Sie haben eine garantierte Initialisierung durch die Konstruktoren bereitgestellt? –

1
public class Bibabu{ 
    private String name; 
    private int credits; 
    private int contactHours; 

    public Bibabu(){ 
    name = "";   // you could also write this.name and so on... 
    credits = 0; 
    contactHours= 0; 
    } 

    // more code here 

} 
+0

Danke, ich unterrichte mich selbst Java und habe alle anderen schwierigeren Teile ohne Probleme gemacht, aber diese Methode hat mir einige Probleme bereitet, danke nochmal für die schnelle Antwort. – Pieter

+3

"Bibabu" ist ein neuer "Standardname" für mich :) –

0

Sie brauchen nicht einen Konstruktor:

public class Dummy 
{ 
    private int credits = 0; 
    private int contactHours=0; 
    private String name=""; 
/* 
    public Dummy() 
    { 
     name = ""; 
     credits = 0; 
     contactHours = 0; 
    } 
*/ 
    // More stuff here, e.g. property accessors 
} 
+0

Ich würde nur den Wert von 'name' voreinstellen, wenn kein anderer Konstruktor es setzen würde - und ich würde erwarten, dass es andere Konstruktoren gibt, die * Werte * annehmen. (Siehe meine bearbeitete Antwort für ein Beispiel.) –

+0

Noch mehr .. Sie müssen Ganzzahlen nicht initialisieren. –

+0

Das ist nur wahr, wenn mit 0 initialisiert :-). Ich denke, es ist einfacher zu lesen, wenn das Attribut mit 0 initialisiert wird. –

-1
//constructor 
    public Account(int id, double balance, Person owner){ 

     this.id = id; 
     this.balance = balance; 
     this.owner = owner; 
2
public class Test { 
private String name; 
private int credits; 
private int contactHours; 

public Test { 

    this("", 0, 0); 

} 
public Test (String name, int credits, int contactHours) { 
this.name = name; 
this.credits = credits; 
this.contactHours = contactHours; 
} 

// more code here 
} 
Verwandte Themen