- Typy konstruktérů
- Přetížení konstruktoru
- Vrátí konstruktor nějakou hodnotu?
- Kopírování hodnot jednoho objektu do druhého
- Provádí konstruktor místo inicializace jiné úkoly
v Jáva , konstruktor je blok kódů podobný metodě. Je voláno, když je instance the třída je vytvořen. V době volání konstruktoru je v paměti alokována paměť pro objekt.
Jedná se o speciální typ metody, která se používá k inicializaci objektu.
Pokaždé, když je objekt vytvořen pomocí klíčového slova new(), je volán alespoň jeden konstruktor.
Pokud ve třídě není k dispozici žádný konstruktor, volá výchozí konstruktor. V takovém případě poskytuje kompilátor Java ve výchozím nastavení výchozí konstruktor.
V Javě existují dva typy konstruktorů: konstruktor no-arg a parametrizovaný konstruktor.
Poznámka: Říká se mu konstruktor, protože konstruuje hodnoty v době vytvoření objektu. Není nutné psát konstruktor pro třídu. Je to proto, že kompilátor java vytvoří výchozí konstruktor, pokud vaše třída žádný nemá.
Pravidla pro vytváření konstruktoru Java
Pro konstruktor jsou definována dvě pravidla.
nit.zničit
- Název konstruktoru musí být stejný jako název jeho třídy
- Konstruktor nesmí mít žádný explicitní návratový typ
- Konstruktor Java nemůže být abstraktní, statický, konečný a synchronizovaný
Poznámka: Můžeme použít modifikátory přístupu při deklarování konstruktéra. Řídí vytváření objektů. Jinými slovy, v Javě můžeme mít soukromý, chráněný, veřejný nebo výchozí konstruktor.
Typy Java konstruktorů
V Javě existují dva typy konstruktorů:
- Výchozí konstruktor (konstruktor bez argumentů)
- Parametrizovaný konstruktor
Výchozí konstruktor Java
Konstruktor se nazývá 'Výchozí konstruktor', když nemá žádný parametr.
Syntaxe výchozího konstruktoru:
(){}
Příklad výchozího konstruktoru
V tomto příkladu vytváříme konstruktor no-arg ve třídě Bike. Bude vyvolána v okamžiku vytvoření objektu. |
//Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } }Otestujte to hned
Výstup:
Bike is created
Pravidlo: Pokud ve třídě není žádný konstruktor, kompilátor automaticky vytvoří výchozí konstruktor.
Q) Jaký je účel výchozího konstruktoru?
Výchozí konstruktor se používá k poskytnutí výchozích hodnot objektu, jako je 0, null atd., v závislosti na typu.
Příklad výchozího konstruktoru, který zobrazuje výchozí hodnoty
//Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } }Otestujte to hned
Výstup:
0 null 0 null
Vysvětlení: Ve výše uvedené třídě nevytváříte žádný konstruktor, takže kompilátor vám poskytuje výchozí konstruktor. Výchozí konstruktor zde poskytuje hodnoty 0 a null.
Java parametrizovaný konstruktor
Konstruktor, který má určitý počet parametrů, se nazývá parametrizovaný konstruktor.
Proč používat parametrizovaný konstruktor?
Parametrizovaný konstruktor se používá k poskytování různých hodnot odlišným objektům. Můžete však zadat stejné hodnoty.
Příklad parametrizovaného konstruktoru
V tomto příkladu jsme vytvořili konstruktor třídy Student, který má dva parametry. V konstruktoru můžeme mít libovolný počet parametrů.
//Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } }Otestujte to hned
Výstup:
111 Karan 222 Aryan
Přetížení konstruktoru v Javě
V Javě je konstruktor jako metoda, ale bez návratového typu. Může být také přetížen jako metody Java.
Konstruktér přetížení v Javě je technika s více než jedním konstruktorem s různými seznamy parametrů. Jsou uspořádány tak, že každý konstruktér provádí jiný úkol. Překladač je rozlišuje počtem parametrů v seznamu a jejich typy.
Příklad přetížení konstruktoru
//Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } }Otestujte to hned
Výstup:
111 Karan 0 222 Aryan 25
Rozdíl mezi konstruktorem a metodou v Javě
Mezi konstruktory a metodami je mnoho rozdílů. Jsou uvedeny níže.
Java konstruktor | Java metoda |
---|---|
K inicializaci stavu objektu se používá konstruktor. | Metoda se používá k odhalení chování objektu. |
Konstruktor nesmí mít návratový typ. | Metoda musí mít návratový typ. |
Konstruktor je vyvolán implicitně. | Metoda je vyvolána explicitně. |
Kompilátor Java poskytuje výchozí konstruktor, pokud ve třídě nemáte žádný konstruktor. | Metodu v žádném případě neposkytuje kompilátor. |
Název konstruktoru musí být stejný jako název třídy. | Název metody může nebo nemusí být stejný jako název třídy. |
Java Copy Constructor
V Javě neexistuje žádný kopírovací konstruktor. Můžeme však kopírovat hodnoty z jednoho objektu do druhého jako kopírovací konstruktor v C++.
V Javě existuje mnoho způsobů, jak zkopírovat hodnoty jednoho objektu do druhého. Oni jsou:
- Podle konstruktéra
- Přiřazením hodnot jednoho objektu druhému
- Metodou clone() třídy Object
V tomto příkladu zkopírujeme hodnoty jednoho objektu do jiného pomocí konstruktoru Java.
//Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } }Otestujte to hned
Výstup:
111 Karan 111 Karan
Kopírování hodnot bez konstruktoru
Hodnoty jednoho objektu můžeme zkopírovat do jiného tak, že hodnoty objektů přiřadíme jinému objektu. V tomto případě není potřeba vytvářet konstruktor.
class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } }Otestujte to hned
Výstup:
111 Karan 111 Karan
Q) Vrací konstruktor nějakou hodnotu?
Ano, je to aktuální instance třídy (nemůžete použít návratový typ, ale vrací hodnotu).
kat timpf sestra
Může konstruktor provádět jiné úkoly místo inicializace?
Ano, jako je vytváření objektů, spouštění vlákna, volání metody atd. V konstruktoru můžete provádět jakoukoli operaci, kterou provádíte v metodě.
Existuje v Javě třída Constructor?
Ano.
Jaký je účel třídy Konstruktor?
Java poskytuje třídu Constructor, kterou lze použít k získání interních informací o konstruktoru ve třídě. Nachází se v balíčku java.lang.reflect.