Selles õpetuses õpime näidete abil Java konstruktoreid, nende tüüpe ja nende kasutamist.
Mis on konstruktor?
Java konstruktor sarnaneb meetodiga, mida rakendatakse klassi objekti loomisel.
Erinevalt Java meetoditest on konstruktoril sama nimi kui klassil ja tal pole ühtegi tagastustüüpi. Näiteks,
klassi test (Test () (// konstruktori kere))
Siin Test()
on konstruktor. Sellel on sama nimi kui klassil ja sel pole tagasitüüpi.
Soovitatav lugemine: Miks konstruktorid väärtusi ei tagasta?
Näide 1: Java-konstruktor
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äljund :
Ehitaja kutsutud: nimi on Programiz
Ülaltoodud näites oleme loonud konstruktori nimega Main()
. Konstruktori sees lähtestame nimemuutuja väärtust.
Pange tähele põhiklassi objekti loomise avaldust.
Main obj = new Main();
Siin Main()
kutsutakse objekti loomisel konstruktorit. Ja nimimuutuja väärtus lähtestatakse.
Seega prindib programm nimemuutujate väärtuse kujul Programiz
.
Konstruktori tüübid
Javas saab konstruktoreid jagada kolme tüüpi:
- No-Arg konstruktor
- Parameetriline konstruktor
- Vaikekonstruktor
1. Java no-Arg konstruktorid
Sarnaselt meetoditega võivad Java konstruktoril olla parameetrid (argumendid) või mitte.
Kui konstruktor ei aktsepteeri ühtegi parameetrit, on see tuntud kui argumentideta konstruktor. Näiteks,
private Constructor() ( // body of the constructor )
Näide 2: Java privaatne no-arg konstruktor
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äljund :
Konstruktorit nimetatakse i väärtuseks: 5
Ülaltoodud näites oleme loonud konstruktori Main()
. Siin ei aktsepteeri konstruktor ühtegi parameetrit. Seega on see tuntud kui arg-konstruktor.
Pange tähele, et oleme kuulutanud konstruktori privaatseks.
Kui konstruktor on deklareeritud private
, ei pääse sellele juurde väljaspool klassi. Seega on objektide loomine väljastpoolt klassi keelatud erakonstruktori abil.
Siin loome objekti sama klassi sees. Seega on programmil juurdepääs konstruktorile. Lisateabe saamiseks külastage Java Implement Private Constructor'i.
Kui aga tahame luua objekte väljaspool klassi, siis peame deklareerima konstruktori nimega public
.
Näide 3: Java avalikud no-arg konstruktorid
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äljund :
Ettevõtte nimi = Programiz
Soovitatav lugemine: Java Access Modifier
2. Java parameetriga konstruktor
Java konstruktor võib aktsepteerida ka ühte või mitut parameetrit. Selliseid konstruktoreid nimetatakse parametriseeritud konstruktoriteks (parameetritega konstruktor).
Näide 4: Parameetriga konstruktor
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äljund :
Java programmeerimiskeel Pythoni programmeerimiskeel C programmeerimiskeel
Ülaltoodud näites oleme loonud konstruktori nimega Main()
. Siin võtab konstruktor ühe parameetri. Pange tähele väljendit
Main obj1 = new Main("Java");
Siinkohal edastame ühe väärtuse konstruktorile. Vastuvõetud argumendi põhjal initsialiseeritakse keelemuutuja konstruktori sees.
3. Java vaikekonstruktor
Kui me ei loo ühtegi konstruktorit, loob Java kompilaator programmi täitmise ajal automaatselt argumendi-konstruktori. Seda konstruktorit nimetatakse vaikekonstruktoriks.
Näide 5: Vaikekonstruktor
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äljund :
a = 0 b = vale
Siin pole me loonud ühtegi konstruktorit. Seega loob Java kompilaator vaikekonstruktori automaatselt.
Vaikekonstruktor lähtestab kõik initsialiseerimata eksemplari muutujad vaikeväärtustega.
Tüüp | Vaikeväärtus |
---|---|
boolean | vale |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | u0000 |
float | 0,0f |
double | 0.0d |
object | Viide null |
Ülaltoodud programmi muutujad a ja b vormindatud vaikeväärtus 0 ja false
vastavalt.
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
Ülaltoodud näites on meil kaks konstruktorit: Main()
ja Main(String language)
. Siin lähtestavad mõlemad konstruktorid muutuja keele väärtuse erinevate väärtustega.
Objekti loomisel edastatud parameetri põhjal kutsutakse erinevaid konstruktoreid ja määratakse erinevad väärtused.
Samuti on võimalik kutsuda ühte konstruktorit teisest konstruktorist. Lisateabe saamiseks külastage Java Call One Constructor from Another.
Märkus : Oleme kasutanud this
märksõna klassi muutuja määramiseks. this
Märksõna kohta lisateabe saamiseks külastage seda märksõna Java.