Šioje pamokoje su pavyzdžių pagalba sužinosime apie „Java“ konstruktorius, jų tipus ir kaip juos naudoti.
Kas yra konstruktorius?
„Java“ konstruktorius yra panašus į metodą, kuris yra naudojamas sukūrus klasės objektą.
Skirtingai nuo „Java“ metodų, konstruktorius turi tą patį pavadinimą, kaip ir klasė, ir neturi jokio grąžinimo tipo. Pavyzdžiui,
klasės testas (Test () (// konstruktoriaus korpusas))
Čia Test()
yra konstruktorius. Jis turi tą patį pavadinimą kaip klasė ir neturi grąžinimo tipo.
Rekomenduojamas skaitymas: Kodėl konstruktoriai negrąžina verčių
1 pavyzdys: „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); ) )
Išvestis :
Skambino konstruktorius: vardas yra „Programiz“
Ankstesniame pavyzdyje mes sukūrėme konstruktorių, pavadintą Main()
. Konstruktoriaus viduje inicijuojame vardo kintamojo vertę.
Atkreipkite dėmesį į pagrindinės klasės objekto sukūrimo teiginį.
Main obj = new Main();
Čia, sukūrus objektą, Main()
vadinamas konstruktorius. Ir vardo kintamojo vertė inicijuojama.
Vadinasi, programa pavadinimo kintamųjų vertę išspausdina kaip Programiz
.
Konstruktoriaus tipai
„Java“ konstruktorius galima suskirstyti į 3 tipus:
- „No-Arg“ konstruktorius
- Parametruotas konstruktorius
- Numatytasis konstruktorius
1. „Java No-Arg“ konstruktoriai
Panašiai kaip metodai, „Java“ konstruktorius gali turėti parametrų (argumentų) arba neturėti jų.
Jei konstruktorius nepriima jokių parametrų, jis vadinamas konstruktoriumi be argumentų. Pavyzdžiui,
private Constructor() ( // body of the constructor )
2 pavyzdys: „Java“ privatus konstruktorius be argumentų
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); ) )
Išvestis :
Konstruktorius vadinamas i reikšme: 5
Ankstesniame pavyzdyje mes sukūrėme konstruktorių Main()
. Čia konstruktorius nepriima jokių parametrų. Vadinasi, jis yra žinomas kaip konstruktorius be argo.
Atkreipkite dėmesį, kad mes paskelbėme, kad konstruktorius yra privatus.
Paskelbus konstruktorių private
, jo negalima pasiekti iš klasės ribų. Taigi, naudojant privatų konstruktorių, draudžiama kurti objektus ne iš klasės.
Čia mes kuriame objektą tos pačios klasės viduje. Taigi programa gali pasiekti konstruktorių. Norėdami sužinoti daugiau, apsilankykite „Java Implement Private Constructor“.
Tačiau jei norime sukurti objektus už klasės ribų, tuomet konstruktorių turime deklaruoti kaip public
.
3 pavyzdys: „Java“ viešieji be argumentų konstruktoriai
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); ) )
Išvestis :
Įmonės pavadinimas = Programiz
Rekomenduojamas skaitymas: „ Java Access Modifier“
2. „Java“ parametruojamas konstruktorius
„Java“ konstruktorius taip pat gali priimti vieną ar daugiau parametrų. Tokie konstruktoriai yra žinomi kaip parametrizuoti konstruktoriai (konstruktorius su parametrais).
4 pavyzdys: Parametruotas konstruktorius
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"); ) )
Išvestis :
Java programavimo kalba Python programavimo kalba C programavimo kalba
Ankstesniame pavyzdyje mes sukūrėme konstruktorių, pavadintą Main()
. Čia konstruktorius paima vieną parametrą. Atkreipkite dėmesį į išraišką,
Main obj1 = new Main("Java");
Čia mes perduodame vieną vertę konstruktoriui. Remiantis perduotu argumentu, kalbos kintamasis inicijuojamas konstruktoriaus viduje.
3. Numatytasis „Java“ konstruktorius
Jei nekursime jokio konstruktoriaus, „Java“ kompiliatorius, vykdydamas programą, automatiškai sukurs „no-arg“ konstruktorių. Šis konstruktorius vadinamas numatytuoju konstruktoriumi.
5 pavyzdys: numatytasis konstruktorius
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); ) )
Išvestis :
a = 0 b = klaidinga
Čia mes nesukūrėme jokių konstruktorių. Taigi „Java“ kompiliatorius automatiškai sukuria numatytąjį konstruktorių.
Numatytasis konstruktorius inicijuoja visus neinicijuotus egzempliorių kintamuosius su numatytosiomis reikšmėmis.
Tipas | Numatytoji reikšmė |
---|---|
boolean | melagingas |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | u0000 |
float | 0.0f |
double | 0.0d |
object | Nuoroda nulinė |
Pirmiau pateiktoje programoje kintamieji a ir b inicijuojami pagal numatytąją reikšmę 0 ir false
atitinkamai.
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
Ankstesniame pavyzdyje mes turime du konstruktorius: Main()
ir Main(String language)
. Čia abu konstruktoriai inicijuoja kintamosios kalbos vertę skirtingomis reikšmėmis.
Pagal parametrą, perduotą kuriant objektą, iškviečiami skirtingi konstruktoriai ir priskiriamos skirtingos vertės.
Taip pat galima paskambinti vienam konstruktoriui iš kito konstruktoriaus. Norėdami sužinoti daugiau, apsilankykite „Java Call One Constructor from Another“.
Pastaba : this
klasės kintamajam nurodyti naudojome raktinį žodį. Norėdami sužinoti daugiau apie this
raktinį žodį, apsilankykite „Java“ šiame raktažodyje.