V tomto výučbe sa pomocou príkladov dozvieme o konštruktoroch Java, ich typoch a o tom, ako ich používať.
Čo je to konštruktér?
Konštruktor v Jave je podobný metóde, ktorá sa vyvolá pri vytvorení objektu triedy.
Na rozdiel od metód Java má konštruktor rovnaký názov ako trieda a nemá žiadny návratový typ. Napríklad,
test triedy (Test () (// telo konštruktora))
Tu Test()
je konštruktér. Má rovnaký názov ako trieda a nemá návratový typ.
Odporúčané čítanie: Prečo konštruktéri nevracajú hodnoty
Príklad 1: Java Constructor
class Main ( private String name; // constructor Main() ( System.out.println("Constructor Called:"); name = "Programiz"; ) public static void main(String() args) ( // constructor is invoked while // creating an object of the Main class Main obj = new Main(); System.out.println("The name is " + obj.name); ) )
Výstup :
Konštruktér sa volá: Názov je Programiz
Vo vyššie uvedenom príklade sme vytvorili konštruktor s názvom Main()
. Vo vnútri konštruktora inicializujeme hodnotu premennej názvu.
Všimnite si vyhlásenie o vytvorení objektu triedy Main.
Main obj = new Main();
Tu sa pri vytvorení objektu Main()
zavolá konštruktor. A hodnota premennej názvu je inicializovaná.
Preto program vytlačí hodnotu premenných mien ako Programiz
.
Typy konštruktora
V Jave možno konštruktory rozdeliť do 3 typov:
- Konštruktor bez Arg
- Parametrizovaný konštruktor
- Predvolený konštruktor
1. Java No-Arg konštruktory
Podobne ako metódy, aj konštruktor Java môže, ale nemusí mať akékoľvek parametre (argumenty).
Ak konštruktor neprijíma žiadne parametre, je známy ako konštruktor bez argumentov. Napríklad,
private Constructor() ( // body of the constructor )
Príklad 2: Java súkromný konštruktor no-arg
class Main ( int i; // constructor with no parameter private Main() ( i = 5; System.out.println("Constructor is called"); ) public static void main(String() args) ( // calling the constructor without any parameter Main obj = new Main(); System.out.println("Value of i: " + obj.i); ) )
Výstup :
Konštruktor sa volá Hodnota i: 5
Vo vyššie uvedenom príklade sme vytvorili konštruktor Main()
. Konštruktér tu neprijíma žiadne parametre. Preto je známy ako konštruktor bez arg.
Všimnite si, že sme deklarovali konštruktor ako súkromný.
Po deklarácii konštruktora k private
nemu nie je možné získať prístup mimo triedy. Takže vytváranie objektov mimo triedy je zakázané pomocou súkromného konštruktora.
Tu vytvárame objekt vo vnútri tej istej triedy. Preto je program schopný získať prístup ku konštruktoru. Ak sa chcete dozvedieť viac, navštívte stránku Java Implement Private Constructor.
Ak však chceme vytvárať objekty mimo triedy, potom musíme deklarovať konštruktor ako public
.
Príklad 3: Java verejné konštruktory no-arg
class Company ( String name; // public constructor public Company() ( name = "Programiz"; ) ) public class Main ( public static void main(String() args) ( // object is created in another class Company obj = new Company(); System.out.println("Company name = " + obj.name); ) )
Výstup :
Názov spoločnosti = Programiz
Odporúčané čítanie: Modifikátor prístupu Java
2. Java parametrizovaný konštruktor
Konštruktor Java môže tiež prijať jeden alebo viac parametrov. Takéto konštruktory sú známe ako parametrizované konštruktory (konštruktor s parametrami).
Príklad 4: Parametrizovaný konštruktor
class Main ( String languages; // constructor accepting single value Main(String lang) ( languages = lang; System.out.println(languages + " Programming Language"); ) public static void main(String() args) ( // call constructor by passing a single value Main obj1 = new Main("Java"); Main obj2 = new Main("Python"); Main obj3 = new Main("C"); ) )
Výstup :
Programovací jazyk Java Programovací jazyk Python C Programovací jazyk C
Vo vyššie uvedenom príklade sme vytvorili konštruktor s názvom Main()
. Konštruktor tu vezme jediný parameter. Všimnite si výraz,
Main obj1 = new Main("Java");
Tu odovzdávame jednu hodnotu konštruktoru. Na základe zadaného argumentu sa jazyková premenná inicializuje vo vnútri konštruktora.
3. Predvolený konštruktor Java
Pokiaľ nevytvoríme žiadny konštruktor, kompilátor Java počas vykonávania programu automaticky vytvorí konštruktor no-arg. Tento konštruktor sa nazýva predvolený konštruktor.
Príklad 5: Predvolený konštruktor
class Main ( int a; boolean b; public static void main(String() args) ( // A default constructor is called Main obj = new Main(); System.out.println("Default Value:"); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); ) )
Výstup :
a = 0 b = nepravda
Tu sme nevytvorili žiadnych konštruktérov. Preto kompilátor Java automaticky vytvorí predvolený konštruktor.
Predvolený konštruktor inicializuje všetky neinicializované premenné inštancie s predvolenými hodnotami.
Typ | Predvolená hodnota |
---|---|
boolean | nepravdivé |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | u0000 |
float | 0,0f |
double | 0,0 d |
object | Referenčná hodnota null |
Vo vyššie uvedenom programe, premenné a a b sú inicializované s východiskovými hodnotami 0 a false
v tomto poradí.
The above program is equivalent to:
class Main ( int a; boolean b; // a private constructor private Main() ( a = 0; b = false; ) public static void main(String() args) ( // call the constructor Main obj = new Main(); System.out.println("Default Value:"); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); ) )
The output of the program is the same as Example 5.
Important Notes on Java Constructors
- Constructors are invoked implicitly when you instantiate objects.
- The two rules for creating a constructor are:
The name of the constructor should be the same as the class.
A Java constructor must not have a return type. - If a class doesn't have a constructor, the Java compiler automatically creates a default constructor during run-time. The default constructor initializes instance variables with default values. For example, the
int
variable will be initialized to0
- Constructor types:
No-Arg Constructor - a constructor that does not accept any arguments
Parameterized constructor - a constructor that accepts arguments
Default Constructor - a constructor that is automatically created by the Java compiler if it is not explicitly defined. - A constructor cannot be
abstract
orstatic
orfinal
. - A constructor can be overloaded but can not be overridden.
Constructors Overloading in Java
Similar to Java method overloading, we can also create two or more constructors with different parameters. This is called constructors overloading.
Example 6: Java Constructor Overloading
class Main ( String language; // constructor with no parameter Main() ( this.language = "Java"; ) // constructor with a single parameter Main(String language) ( this.language = language; ) public void getName() ( System.out.println("Programming Langauage: " + this.language); ) public static void main(String() args) ( // call constructor with no parameter Main obj1 = new Main(); // call constructor with a single parameter Main obj2 = new Main("Python"); obj1.getName(); obj2.getName(); ) )
Output:
Programming Language: Java Programming Language: Python
Vo vyššie uvedenom príklade máme dva konštruktory: Main()
a Main(String language)
. Tu konštruktor inicializuje hodnotu jazyka premennej rôznymi hodnotami.
Na základe parametra odovzdaného počas vytvárania objektu sa volajú rôzne konštruktory a priraďujú sa rôzne hodnoty.
Je tiež možné zavolať jedného konštruktora z iného konštruktora. Ak sa chcete dozvedieť viac, navštívte Java Call One Constructor od druhého.
Poznámka : Na this
určenie premennej triedy sme použili kľúčové slovo. Ak sa chcete dozvedieť viac informácií o this
kľúčovom slove, navštívte Java toto kľúčové slovo.