Java konstruktorok (példákkal)

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java konstruktorokat, azok típusait és használatát.

Mi az a kivitelező?

A Java-ban egy konstruktor hasonló ahhoz a módszerhez, amelyet az osztály objektumának létrehozásakor hívnak meg.

A Java módszerektől eltérően a konstruktornak ugyanaz a neve, mint az osztálynak, és nincs visszatérési típusa. Például,

 osztály teszt (Test () (// kivitelező test))

Itt Test()van egy kivitelező. Azonos neve van, mint az osztálynak, és nincs visszatérési típusa.

Ajánlott olvasmány: Miért nem adják vissza a kivitelezők az értékeket?

1. példa: 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); ) )

Kimenet :

 Konstruktor hívva: A név Programiz

A fenti példában létrehoztunk egy nevű konstruktort Main(). A konstruktorban belül inicializáljuk a névváltozó értékét.

Figyelje meg a Main osztály objektumának létrehozására vonatkozó állítást.

 Main obj = new Main();

Itt, amikor az objektum létrejön, a Main()konstruktort meghívjuk. És a névváltozó értéke inicializálódik.

Ezért a program a névváltozók értékét kinyomtatja Programiz.

A kivitelező típusai

A Java-ban a kivitelezők 3 típusra oszthatók:

  1. No-Arg konstruktor
  2. Paraméterezett kivitelező
  3. Alapértelmezett kivitelező

1. Java No-Arg konstruktorok

A módszerekhez hasonlóan a Java konstruktornak lehetnek paraméterei (argumentumai), vagy nem.

Ha egy konstruktor nem fogad el semmilyen paramétert, akkor argumentum nélküli konstruktorként ismerjük. Például,

 private Constructor() ( // body of the constructor )

2. példa: Java privát 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); ) )

Kimenet :

 A konstruktort az i: 5 értékének nevezzük

A fenti példában létrehoztunk egy konstruktort Main(). Itt a konstruktor nem fogad el semmilyen paramétert. Ennélfogva no-arg konstruktorként ismert.

Figyeljük meg, hogy a kivitelezőt privátnak nyilvánítottuk.

Miután egy konstruktort deklaráltunk private, az osztályon kívülről nem lehet elérni. Tehát az objektumokat az osztályon kívülről nem szabad létrehozni a privát konstruktor használatával.

Itt ugyanazon osztályon belül hozzuk létre az objektumot. Ezért a program képes elérni a konstruktort. További információkért látogasson el a Java Implement Private Constructor oldalra.

Ha azonban objektumokat akarunk létrehozni az osztályon kívül, akkor a konstruktort így kell deklarálnunk public.

3. példa: Java nyilvános no-arg konstruktorok

 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); ) )

Kimenet :

 Cég neve = Programiz

Ajánlott olvasmány: Java Access Modifier

2. Java paraméterezett konstruktor

A Java konstruktor egy vagy több paramétert is elfogadhat. Az ilyen konstruktorok paraméterezett konstruktorok (konstruktor paraméterekkel).

4. példa: Paraméterezett 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"); ) )

Kimenet :

 Java programozási nyelv Python programozási nyelv C programozási nyelv

A fenti példában létrehoztunk egy nevű konstruktort Main(). Itt a konstruktor egyetlen paramétert vesz fel. Figyelje meg a kifejezést,

 Main obj1 = new Main("Java");

Itt az egyetlen értéket átadjuk a konstruktornak. Az átadott argumentum alapján a nyelvi változó inicializálódik a konstruktorban.

3. Java Default Constructor

Ha nem hozunk létre konstruktort, akkor a Java fordító automatikusan létrehoz egy no-arg konstruktort a program végrehajtása során. Ezt a konstruktort alapértelmezett konstruktornak nevezzük.

5. példa: Alapértelmezett konstruktor

 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); ) )

Kimenet :

 a = 0 b = hamis

Itt még nem készítettünk kivitelezőket. Ezért a Java fordító automatikusan létrehozza az alapértelmezett konstruktort.

Az alapértelmezett konstruktor inicializálja az összes inicializálatlan példányváltozót alapértelmezett értékekkel.

típus Alapértelmezett érték
boolean hamis
byte 0
short 0
int 0
long 0L
char u0000
float 0,0f
double 0,0d
object Referencia null

A fenti programban az a és b változókat inicializáljuk 0 , falseilletve 0 alapértelmezett értékkel .

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

A fenti példában két konstruktorunk van: Main()és Main(String language). Itt mindkét konstruktor különböző értékekkel inicializálja a változó nyelv értékét.

Az objektum létrehozása során átadott paraméter alapján különböző konstruktorokat hívnak meg, és különböző értékeket rendelnek hozzá.

Az is lehetséges, hogy egyik konstruktort meghívjuk egy másik konstruktorról. További információkért látogasson el a Java Call One Constructor from Another oldalára.

Megjegyzés : thisKulcsszót használtunk az osztály változójának megadásához. Ha többet szeretne megtudni a thiskulcsszóról, keresse fel a Java-t.

érdekes cikkek...