Java-konstruktormetoden

En Java-konstruktör skapar en ny instans av ett redan definierat objekt. Den här artikeln diskuterar hur man använder Java-konstruktormetoder för att skapa ett Personobjekt.

Notera: Du måste skapa två filer i samma mapp för detta exempel: Person.java definierar Personklassen, och PersonExample.java innehåller huvudmetoden som skapar personobjekt.

Konstruktormetoden

Låt oss börja med att skapa en personklass som har fyra privata fält: förnamn, efternamn, adress och användarnamn. Dessa fält är privata variabler och tillsammans utgör deras värden ett objekts tillstånd. Vi har också lagt till de enklaste konstruktionsmetoderna:

 offentlig klass person 
private String firstName;
privat String lastName;
privat strängadress;
privat String-användarnamn;
// Konstruktormetoden
offentlig person ()




Konstruktormetoden liknar alla andra offentliga metoder förutom att den har samma namn som klassen och den kan inte returnera ett värde. Den kan inte ha någon, en eller flera parametrar.

För närvarande gör vår konstruktormetod ingenting alls, och det är en bra tid att överväga vad detta innebär för det personliga objektets initiala tillstånd. Om vi ​​lämnade saker som de är eller vi inte inkluderade en konstruktormetod i vår personklass (i Java kan du definiera en klass utan en), skulle fälten inte ha några värden - och vi vill verkligen att vår person ska ha ett namn och adress samt andra egenskaper. Om du tror att det finns en chans att ditt objekt kanske inte används som du förväntar dig och fälten kanske inte initialiseras när objektet skapas, definierar du dem alltid med ett standardvärde:

 offentlig klass person 
private String firstName = "";
private String lastName = "";
privat strängadress = "";
privat String användarnamn = "";
// Konstruktormetoden
offentlig person ()




För att säkerställa att en konstruktormetod är användbar skulle vi normalt utforma den för att förvänta oss parametrar. Värdena som passeras genom dessa parametrar kan användas för att ställa in värdena för de privata fälten:

 offentlig klass person 
private String firstName;
privat String lastName;
privat strängadress;
privat String-användarnamn;
// Konstruktormetoden
public Person (String personFirstname, String personLastName, String personAddress, String personUsername)

firstName = personFirstName;
lastName = personLastName;
adress = personadress;
användarnamn = person Användarnamn;

// En metod för att visa objektets tillstånd på skärmen
public void displayPersonDetails ()

System.out.println ("Namn:" + förnamn + "" + efternamn);
System.out.println ("Adress:" + adress);
System.out.println ("Användarnamn:" + användarnamn);



Vår konstruktormetod förväntar sig nu att värdena på fyra strängar överförs till den. De används sedan för att ställa in det ursprungliga tillståndet för objektet. Vi har också lagt till en ny metod som heter displayPersonDetails () för att vi ska kunna se objektets tillstånd efter att det har skapats.

Ringa konstruktormetoden

Till skillnad från andra metoder för ett objekt måste konstruktormetoden kallas med hjälp av det "nya" nyckelordet:

 Personklass Exempel 
public static void main (String [] args)
Person dave = ny person ("Dave", "Davidson", "12 Main St.", "DDavidson");
dave.displayPersonDetails ();



Här är vad vi gjorde:

  1. För att skapa den nya instansen av Person-objektet definierar vi först en variabel av typen Person som kommer att innehålla objektet. I det här exemplet har vi kallat det dave.
  2. På den andra sidan av likhetstecknet kallar vi konstruktormetoden i vår personklass och passerar det fyra strängvärden. Vår konstruktormetod tar de fyra värdena och ställer in det initiala tillståndet för Personobjektet till att vara: firstName = "Dave", lastName = "Davidson", adress = "12 Main St", användarnamn = "DDavidson".

Lägg märke till hur vi har bytt till Java-huvudklassen för att kalla Person-objektet. När du arbetar med objekt kommer program att omfatta flera .java-filer. Se till att du sparar dem i samma mapp. För att kompilera och köra programmet, helt enkelt kompilera och köra Java-huvudklassfilen (dvs., PersonExample.java). Java-kompilatorn är tillräckligt smart för att inse att du vill kompilera Person.java fil också eftersom den kan se att du har använt den i klassen PersonExample.

Parametrarnas namngivning

Java-kompilatorn blir förvirrad om parametrarna för konstruktormetoden har samma namn som de privata fälten. I det här exemplet kan du se att vi har skiljt mellan dem genom att prefixa parametrarna med ordet "person". Det är värt att nämna att det finns ett annat sätt. Vi kan istället använda "detta" sökord:

 // Konstruktormetoden
offentlig person (String firstName, String lastName, String address, String-användarnamn)

this.firstName = förnamn;
this.lastName = lastName;
this.address = adress;
this.username = användarnamn;


Nyckelordet "detta" säger till Java-kompilatorn att den variabel som ska tilldelas värdet är den som definieras av klassen, inte parametern. Det är en fråga om programmeringsstil, men den här metoden hjälper oss att definiera konstruktörsparametrar utan att behöva använda flera namn.

Mer än en konstruktormetod

När du utformar dina objektklasser är du inte begränsad till att bara använda en konstruktormetod. Du kan bestämma att det finns ett par sätt ett objekt kan initialiseras. Den enda begränsningen för att använda mer än en konstruktormetod är att parametrarna måste skilja sig åt.

Föreställ dig att när vi skapar Person-objektet kanske vi inte känner till användarnamnet. Låt oss lägga till en ny konstruktormetod som ställer in status för Personobjektet med bara förnamn, efternamn och adress:

 offentlig klass person 
private String firstName;
privat String lastName;
privat strängadress;
privat String-användarnamn;
// Konstruktormetoden
offentlig person (String firstName, String lastName, String address, String-användarnamn)

this.firstName = förnamn;
this.lastName = lastName;
this.address = adress;
this.username = användarnamn;

// Den nya konstruktormetoden
offentlig person (String firstName, String lastName, String address)

this.firstName = förnamn;
this.lastName = lastName;
this.address = adress;
this.username = "";

// En metod för att visa objektets tillstånd på skärmen
public void displayPersonDetails ()

System.out.println ("Namn:" + förnamn + "" + efternamn);
System.out.println ("Adress:" + adress);
System.out.println ("Användarnamn:" + användarnamn);



Observera att den andra konstruktormetoden också kallas "Person" och den returnerar inte heller ett värde. Den enda skillnaden mellan den och den första konstruktormetoden är parametrarna - den här gången bara förväntar sig tre strängvärden: förnamn, efternamn och adress.

Vi kan nu skapa personobjekt på två olika sätt:

 Personklass Exempel 
public static void main (String [] args)
Person dave = ny person ("Dave", "Davidson", "12 Main St.", "DDavidson");
Person jim = ny person ("Jim", "Davidson", "15 Kings Road");
dave.displayPersonDetails ();
jim.displayPersonDetails ();



Person dave skapas med ett förnamn, efternamn, adress och användarnamn. Person jim, kommer emellertid inte att få ett användarnamn, dvs användarnamnet kommer att vara den tomma strängen: username = "".

En snabb sammanfattning

Konstruktormetoder kallas bara när en ny instans av ett objekt skapas. De:

  • Måste ha samma namn som klassen
  • Lämna inte ett värde
  • Kan inte ha någon, en eller många parametrar
  • Kan numera mer än en så länge varje konstruktionsmetod har en annan uppsättning parametrar
  • Kan ha parameternamn samma som de privata fälten så länge "detta" sökord används
  • Kallas med det "nya" nyckelordet