2017-08-21 3 views
-7

Im parametrisierten Konstruktor, warum wir wieder eine Variablendeklaration benötigen.Parametrisierter Konstruktor Java

Wie der Code unten

int id; erklärt, dann wieder in Konstruktor int i..id=I;

class Student4{ 
    int id; 
    String name; 

    Student4(int i,String n){ 
     id = i; 
     name = n; 
    }  

    void display(){System.out.println(id+" "+name);} 

    public static void main(String args[]){ 
    Student4 s1 = new Student4(111,"Karan"); 
    Student4 s2 = new Student4(222,"Aryan"); 
    s1.display(); 
    s2.display(); 
    } 
} 
+0

weil nicht jeder Parameter genau etwas ist, das Sie erstellen, um das Objekt gehört, –

+0

Der Umfang der Methode/Konstruktor Deklaration Parametern und (in diesem Fall) Instanzfelder sind anders. Sie sind nicht die gleichen Variablen. – Mena

+0

Deklaration und Zuweisung sind getrennte Dinge. – duffymo

Antwort

2

Dies ist keine "Re-Deklaration" von Variablen, sondern eine Zuweisung, so arbeiten Parameter.

Ich denke, Sie sind verwirrt, weil es in der gleichen Klasse ist und es scheint, als ob Sie nie die Variable id verwenden, aber im Moment der Erstellung eines neuen Studenten.

public Class Student { 
    private int id; 
    private String name; 

    Student() { 
    } 

    Student(int i, String n) { 
     this.id = i; 
     this.name = n; 
    } 

    //Add here getters & setters 
} 

public Class ClassRoom { 
    public static void main (String args[]) { 
     Student student1 = new Student(1, "John"); 
     Student student2 = new Student(2, "Sarah"); 

     System.out.println(student1.getId()); //This should print 1 
     System.out.println(student2.getId()); //This should print 2 

     //You may achieve the same result as follows: 
     Student student3 = new Student(); 
     student3.setId(3); 
     student3.setName("George"); 

     System.out.println(student3.getId()); //This should print 3 
    } 
} 
3

Nun können Sie einen Fall, in dem Sie mehrere Möglichkeiten haben, das Objekt insantiate basierend auf welche Informationen Sie haben.

Für diese Klasse könnten Sie mehrere haben:

Student4(int i,String n){ 
    this.id = i; 
    this.name = n; 
} 
Student4(int i) { 
    this.id = i; 
    this.name = ""; 
Student4(String n) 
    this.name = n; 
} 

Dies wird als Erbauer zu überlasten.