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.
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.
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:
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.
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.
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 = "".
Konstruktormetoder kallas bara när en ny instans av ett objekt skapas. De: