Používání Java Constructors: Stručný průvodce

Konstruktor Java vytvoří novou instanci již definovaného objektu. Tento článek popisuje, jak použít metody konstruktoru Java k vytvoření objektu Person.

Poznámka: V tomto příkladu musíte vytvořit dva soubory ve stejné složce: Person.java definuje třídu Person a PersonExample.java obsahuje hlavní metoda který vytváří objekty osob.

Metoda konstruktoru

Začněme vytvořením třídy Person, která má čtyři soukromá pole: jméno, příjmení, adresu a uživatelské jméno. Tato pole jsou soukromé proměnné a jejich hodnoty společně vytvářejí stav objektu. Přidali jsme také nejjednodušší metody konstruktérů:

 osoba veřejné třídy {
private String firstName;
soukromé String příjmení;
soukromá adresa řetězce;
soukromé uživatelské jméno String;
// Metoda konstruktoru
veřejná osoba ()
{
}
}

Metoda konstruktoru je podobná jakékoli jiné veřejné metodě s tou výjimkou, že sdílí stejný název jako třída a nemůže vrátit hodnotu. Může mít žádný, jeden nebo mnoho parametrů.

V současné době naše konstruktérská metoda nedělá vůbec nic a je na čase zvážit, co to znamená pro počáteční stav objektu Osoba. Pokud jsme nechali věci tak, jak jsou, nebo jsme nezahrnuli konstruktorovou metodu do naší třídy Person (v

instagram viewer
Jáva můžete definovat třídu bez jedné), pak by pole neměla žádné hodnoty - a určitě chceme, aby naše osoba měla jméno a adresu a další charakteristiky. Pokud si myslíte, že existuje šance, že váš objekt nemusí být použit, jak očekáváte, a pole nemusí být inicializována, když je objekt vytvořen, vždy je definujte výchozí hodnotou:

 osoba veřejné třídy {
private String firstName = "";
private String lastName = "";
soukromá řetězcová adresa = "";
private String username = "";
// Metoda konstruktoru
veřejná osoba ()
{
}
}

Normálně, abychom zajistili užitečnost metody konstruktoru, navrhujeme ji tak, aby očekávala parametry. Hodnoty předávané těmito parametry lze použít k nastavení hodnot soukromých polí:

 osoba veřejné třídy {
private String firstName;
soukromé String příjmení;
soukromá adresa řetězce;
soukromé uživatelské jméno String;
// Metoda konstruktoru
veřejná osoba (String personFirstname, String personLastName, String personAddress, String personUsername)
{
firstName = personFirstName;
lastName = personLastName;
address = personAddress;
username = personUsername;
}
// Metoda zobrazení stavu objektu na obrazovce
public void displayPersonDetails ()
{
System.out.println ("Jméno:" + křestní jméno + "" + příjmení);
System.out.println ("Adresa:" + adresa);
System.out.println ("Username:" + username);
}
}

Naše konstruktérská metoda nyní očekává, že do ní budou předány hodnoty čtyř řetězců. Poté se použijí k nastavení počátečního stavu objektu. Přidali jsme také novou metodu s názvem displayPersonDetails () abychom mohli vidět stav objektu po jeho vytvoření.

Volání metody konstruktoru

Na rozdíl od jiných metod objektu musí být metoda konstruktoru volána pomocí klíčového slova „nové“:

 public class PersonExample {
public static void main (String [] args) {
Osoba dave = nová osoba ("Dave", "Davidson", "12 Main St.", "DDavidson");
dave.displayPersonDetails ();
}
}

Zde je to, co jsme udělali:

  1. Chcete-li vytvořit novou instanci objektu Person, nejprve definujeme proměnnou typu Person, která bude objekt držet. V tomto příkladu jsme to nazvali dave.
  2. Na druhé straně znaménka rovná se voláme konstruktorovou metodu naší třídy Person a předáváme jí čtyři hodnoty řetězce. Naše metoda konstruktoru vezme tyto čtyři hodnoty a nastaví počáteční stav objektu Osoba na: firstName = "Dave", lastName = "Davidson", adresa = "12 Main St", username = "DDavidson".

Všimněte si, jak jsme přešli na hlavní třídu Java a zavolali na objekt Person. Když pracujete s objekty, programy se rozloží více souborů .java. Ujistěte se, že je ukládáte do stejné složky. Chcete-li zkompilovat a spustit program, jednoduše zkompilujte a spusťte Java hlavní třída soubor (tj. PersonExample.java). Kompilátor Java je dostatečně chytrý, aby si uvědomil, že chcete kompilovat Person.java soubor, protože je vidět, že jste ho použili ve třídě PersonExample.

Pojmenování parametrů

Kompilátor Java se zmatí, pokud mají parametry metody konstruktoru stejná jména jako soukromá pole. V tomto příkladu můžete vidět, že jsme mezi nimi rozlišili předponou parametrů slovem „osoba“. Stojí za zmínku, že existuje i jiná cesta. Místo toho můžeme použít klíčové slovo „toto“:

 // Metoda konstruktoru
veřejná osoba (String firstName, String lastName, String address, String username)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = username;
}

Klíčové slovo „toto“ říká kompilátoru Java, že proměnná, která má být přiřazena hodnotě, je proměnná definovaná třídou, nikoli parametr. Je to otázka programovacího stylu, ale tato metoda nám pomáhá definovat parametry konstruktoru, aniž bychom museli používat více jmen.

Více než jedna metoda konstruktoru

Při navrhování tříd objektů nejste omezeni pouze na použití jedné metody konstruktoru. Můžete se rozhodnout, že existuje několik způsobů, jak lze objekt inicializovat. Jediným omezením při použití více než jedné metody konstruktoru je to, že parametry se musí lišit.

Představte si, že v době, kdy vytváříme objekt Osoba, možná neznáme uživatelské jméno. Přidejme novou metodu konstruktoru, která nastaví stav objektu Person pouze pomocí křestního jména, příjmení a adresy:

 osoba veřejné třídy {
private String firstName;
soukromé String příjmení;
soukromá adresa řetězce;
soukromé uživatelské jméno String;
// Metoda konstruktoru
veřejná osoba (String firstName, String lastName, String address, String username)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = username;
}
// Nová metoda konstruktoru
veřejná osoba (String firstName, String lastName, String address)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = "";
}
// Metoda zobrazení stavu objektu na obrazovce
public void displayPersonDetails ()
{
System.out.println ("Jméno:" + křestní jméno + "" + příjmení);
System.out.println ("Adresa:" + adresa);
System.out.println ("Username:" + username);
}
}

Všimněte si, že druhá metoda konstruktoru se také nazývá „osoba“ a také nevrací hodnotu. Jediným rozdílem mezi ním a metodou prvního konstruktoru jsou parametry - tentokrát to očekává pouze tři řetězcové hodnoty: jméno, příjmení a adresa.

Nyní můžeme vytvářet objekty osob dvěma různými způsoby:

 public class PersonExample {
public static void main (String [] args) {
Osoba dave = nová osoba ("Dave", "Davidson", "12 Main St.", "DDavidson");
Osoba jim = nová osoba („Jim“, „Davidson“, „15 Kings Road“);
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}

Osoba dave bude vytvořeno s křestním jménem, ​​příjmením, adresou a uživatelským jménem. Osoba jim, neobdrží však uživatelské jméno, tj. uživatelské jméno bude prázdný řetězec: username = "".

Rychlá rekapitulace

Metody konstruktoru jsou volány pouze při vytvoření nové instance objektu. Ony:

  • Musí mít stejný název jako třída
  • Nevracejte hodnotu
  • Nemůže mít žádný, jeden nebo mnoho parametrů
  • Dokáže mít více než jednu, pokud má každá metoda konstruktoru jinou sadu parametrů
  • Může mít názvy parametrů stejné jako soukromé pole, pokud je použito klíčové slovo „toto“
  • Říká se jim použití nového klíčového slova