Java konstruktorid (koos näidetega)

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:

  1. No-Arg konstruktor
  2. Parameetriline konstruktor
  3. 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 falsevastavalt.

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 to 0
  • 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 or static or final.
  • 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 thismärksõna klassi muutuja määramiseks. thisMärksõna kohta lisateabe saamiseks külastage seda märksõna Java.

Huvitavad Artiklid...