Java конструктор създава нов екземпляр на вече дефиниран обект. Тази статия обсъжда как да използвате методите на Java конструктор за създаване на обект Person.
Забележка: За този пример трябва да създадете два файла в една и съща папка: Person.java определя класа Person и PersonExample.java съдържа основен метод което създава Person обекти.
Методът на конструктора
Нека започнем със създаването на клас Person, който има четири частни полета: firstName, lastName, адрес и потребителско име. Тези полета са частни променливи и заедно техните стойности съставляват състоянието на обект. Добавихме и най-простите методи за конструктор:
човек от публичната класа {
частен String firstName;
частно String lastName;
личен стринг адрес;
частно потребителско име на String;
// Методът на конструктора
обществено лице ()
{
}
}
Методът конструктор е подобен на всеки друг публичен метод, с изключение на това, че споделя същото име като класа и не може да върне стойност. Той може да има нито един, нито един или много параметри.
В момента нашият конструктор метод не прави нищо и е подходящ момент да разгледаме какво означава това за първоначалното състояние на обекта Person. Ако оставихме нещата такива, каквито са или не сме включили конструктор метод в нашия клас Person (в Ява можете да определите клас без един), тогава полетата не биха имали стойности - и със сигурност искаме нашият човек да има име и адрес, както и други характеристики. Ако смятате, че има вероятност обектът ви да не бъде използван както очаквате и полетата може да не се инициализират, когато обектът е създаден, винаги ги дефинирайте със стойност по подразбиране:
човек от публичната класа {
private String firstName = "";
private String lastName = "";
private String address = "";
private String username = "";
// Методът на конструктора
обществено лице ()
{
}
}
Обикновено, за да гарантираме, че методът на конструктора е полезен, бихме го проектирали, за да очакваме параметри. Стойностите, преминали през тези параметри, могат да бъдат използвани за задаване на стойностите на частните полета:
човек от публичната класа {
частен String firstName;
частно String lastName;
личен стринг адрес;
частно потребителско име на String;
// Методът на конструктора
обществено лице (String personFirstname, String personLastName, String personAdres, String personUsername)
{
firstName = personFirstName;
lastName = personLastName;
адрес = лице Адрес;
потребителско име = име
}
// Метод за показване състоянието на обекта на екрана
обществено невалидно показванеPersonDetails ()
{
System.out.println ("Име:" + firstName + "" + lastName);
System.out.println ("Адрес:" + адрес);
System.out.println ("Потребителско име:" + потребителско име);
}
}
Нашият конструктор метод сега очаква стойностите на четири низа да бъдат предадени към него. След това се използват за задаване на първоначалното състояние на обекта. Добавихме и нов метод, наречен displayPersonDetails () за да можем да видим състоянието на обекта, след като той е създаден.
Извикване на метода на конструктора
За разлика от други методи на обект, методът на конструктора трябва да бъде извикан с помощта на ключовата дума "new":
обществена класа PersonExample {
public static void main (String [] args) {
Лице Дейв = ново лице ("Дейв", "Дейвидсън", "12 главни св.", "DDavidson");
dave.displayPersonDetails ();
}
}
Ето какво направихме:
- За да създадем новия екземпляр на обекта Person, първо дефинираме променлива от тип Person, която ще държи обекта. В този пример сме го нарекли Дейв.
- От другата страна на знака за равенство, ние наричаме метода конструктор на нашия клас Person и му предаваме четири низови стойности. Нашият конструктор метод ще вземе тези четири стойности и ще зададе първоначалното състояние на обекта Person да бъде: firstName = "Дейв", lastName = "Davidson", адрес = "12 Main St", потребителско име = "DDavidson".
Забележете как сме преминали към основния клас на Java, за да извикаме обекта Person. Когато работите с обекти, програмите ще се обхванат множество .java файлове. Уверете се, че сте ги запазили в същата папка. За да компилирате и стартирате програмата, просто компилирайте и стартирайте Java основен клас файл (т.е. PersonExample.java). Java компилаторът е достатъчно умен, за да осъзнае, че искате да компилирате Person.java файл, тъй като може да види, че сте го използвали в класа PersonExample.
Наименуване на параметри
Java компилаторът се обърква, ако параметрите на метода конструктор имат същите имена като частните полета. В този пример можете да видите, че ние сме разграничили помежду им, като префиксираме параметрите с думата „човек“. Заслужава да се спомене, че има и друг начин. Можем вместо това да използваме ключовата дума „това“:
// Методът на конструктора
обществено лице (String firstName, String lastName, String address, String username)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = адрес;
this.username = потребителско име;
}
Ключовата дума "това" казва на компилатора на Java, че променливата, която трябва да бъде присвоена, е стойността, определена от класа, а не от параметъра. Въпрос на стил на програмиране, но този метод ни помага да определим параметрите на конструктора, без да се налага да използваме няколко имена.
Повече от един метод на конструктор
Когато проектирате вашите класове на обекти, не се ограничавате да използвате само един метод на конструктор. Може да решите, че има няколко начина, по които даден обект може да се инициализира. Единственото ограничение при използването на повече от един конструктор метод е, че параметрите трябва да се различават.
Представете си, че по времето, когато създаваме обекта Person, може да не знаем потребителското име. Нека добавим нов метод на конструктор, който определя състоянието на обекта Person, използвайки само firstName, lastName и адрес:
човек от публичната класа {
частен String firstName;
частно String lastName;
личен стринг адрес;
частно потребителско име на String;
// Методът на конструктора
обществено лице (String firstName, String lastName, String address, String username)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = адрес;
this.username = потребителско име;
}
// Новият метод на конструктор
обществено лице (String firstName, String lastName, String address)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = адрес;
this.username = "";
}
// Метод за показване състоянието на обекта на екрана
обществено невалидно показванеPersonDetails ()
{
System.out.println ("Име:" + firstName + "" + lastName);
System.out.println ("Адрес:" + адрес);
System.out.println ("Потребителско име:" + потребителско име);
}
}
Обърнете внимание, че вторият метод на конструктор също се нарича "Person" и той също не връща стойност. Единствената разлика между него и първия метод на конструктор са параметрите - този път очаква само три низови стойности: firstName, lastName и адрес.
Вече можем да създаваме Person обекти по два различни начина:
обществена класа PersonExample {
public static void main (String [] args) {
Лице Дейв = ново лице ("Дейв", "Дейвидсън", "12 главни св.", "DDavidson");
Person jim = new Person ("Джим", "Дейвидсън", "Пътят на 15 крале");
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}
човек Дейв ще бъдат създадени с име, фамилия, адрес и потребителско име. човек Джим, обаче няма да получи потребителско име, т.е. потребителското име ще бъде празният низ: username = "".
Бързо резюме
Методите на конструктора се наричат само когато е създаден нов екземпляр на обект. Те:
- Трябва да има същото име като класа
- Не връщайте стойност
- Не може да има нито един, нито един, или много параметри
- Може да наброява повече от една, стига всеки метод на конструктор да има различен набор от параметри
- Мога да имам имена на параметри същите като частните полета, докато се използва ключовата дума „това“
- Обаждат се с помощта на ключовата дума "new"