Java konstruktori jeb konstruktori valodā Java ir terminoloģija, ko izmanto, lai kaut ko izveidotu mūsu programmās. Java konstruktors ir a īpaša metode ko izmanto objektu inicializācijai. Konstruktors tiek izsaukts, kad tiek izveidots klases objekts. To var izmantot, lai iestatītu sākotnējās vērtības objekta atribūtiem.
Kas ir Java konstruktori?
Java valodā konstruktors ir kodu bloks, kas ir līdzīgs metodei. Tas tiek izsaukts, kad tiek izveidots klases gadījums. Konstruktora izsaukšanas brīdī atmiņā tiek iedalīta atmiņa objektam. Tā ir īpaša veida metode, ko izmanto objekta inicializācijai. Katru reizi, kad objekts tiek izveidots, izmantojot atslēgvārdu new(), tiek izsaukts vismaz viens konstruktors.
Java konstruktora piemērs
Tālāk ir sniegta Java konstruktoru ieviešana:
Java
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks { // Constructor Geeks() { super(); System.out.println('Constructor Called'); } // main function public static void main(String[] args) { Geeks geek = new Geeks(); } }> Izvade
Constructor Called>
Piezīme: Nav obligāti jāraksta klases konstruktors. Tas ir tāpēc, ka java kompilators izveido noklusējuma konstruktoru (konstruktoru bez argumentiem), ja jūsu klasē tāda nav.
Kā Java konstruktori atšķiras no Java metodēm?
- Konstruktoru nosaukumam ir jābūt tādam pašam kā klasei, kurā tas ir definēts. Java metodei tas nav nepieciešams.
- Konstruktori neatgriež nevienu veidu, kamēr metodei(-ēm) ir atgriešanas veids vai nederīgs ja neatgriež nekādu vērtību.
- Konstruktori tiek izsaukti tikai vienu reizi objekta izveides laikā, savukārt metodi(-es) var izsaukt neierobežotu skaitu reižu.
Tagad izdomāsim sintaksi konstruktoram, kas tiek izsaukts objekta vai instances izveides laikā.
class Geek { ....... // A Constructor Geek() { } ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>Konstruktora pirmā rinda ir izsaukums uz super() vai this(), (izsaukums superklases konstruktoram vai pārslogotam konstruktoram), ja savā konstruktorā neierakstiet super izsaukumu Kompilators nodrošinās jums bezargumentu izsaukumu super jūsu koda pirmajā rindā, ir jāizsauc super konstruktors, lai izveidotu objektu:
Ja domājat, ka jūsu klase nav apakšklase, tā patiesībā ir, katra Java klase ir klases apakšklase objektu pat ja jūs savā klases definīcijā nesaki paplašina objektu.
Nepieciešami konstruktori Java valodā
Padomājiet par kastīti. Ja mēs runājam par kastes klasi, tad tai būs daži klases mainīgie (piemēram, garums, platums un augstums). Bet, ja runa ir par objekta izveidi (t.i., kaste tagad pastāvēs datora atmiņā), vai kaste var atrasties bez tā izmēriem noteiktas vērtības? Atbilde ir N O .
Tātad konstruktori tiek izmantoti, lai objektu izveides laikā piešķirtu vērtības klases mainīgajiem, ko tieši veic programmētājs vai pati Java (noklusējuma konstruktors).
izlaist sarakstu
Kad tiek izsaukts Java konstruktors?
Katru reizi, kad objekts tiek izveidots, izmantojot a jauns() atslēgvārds, tiek izsaukts vismaz viens konstruktors (tas varētu būt noklusējuma konstruktors), lai piešķirtu sākotnējās vērtības datu dalībnieki tās pašas klases. Konstruktoru rakstīšanas noteikumi ir šādi:
- Klases konstruktoram(-iem) ir jābūt tādam pašam nosaukumam kā klases nosaukumam, kurā tā atrodas.
- Java konstruktors nevar būt abstrakts, galīgs, statisks vai sinhronizēts.
- Piekļuves modifikatorus var izmantot konstruktora deklarācijā, lai kontrolētu tā piekļuvi, t.i., kura cita klase var izsaukt konstruktoru.
Līdz šim esam iemācījušies, ka konstruktori tiek izmantoti objekta stāvokļa inicializācijai. Patīk metodes , konstruktors satur arī paziņojumu (t.i., instrukciju) kolekciju, kas tiek izpildīta objekta izveides laikā.
lauzt java
Konstruktoru veidi Java
Tagad ir īstais laiks apspriest konstruktora veidus, tāpēc tālāk ir minēti trīs Java konstruktoru veidi:
- Noklusējuma konstruktors
- Parametrizēts konstruktors
- Kopēšanas konstruktors
1. Noklusējuma konstruktors Java
Konstruktors, kuram nav parametru, tiek dēvēts par noklusējuma konstruktoru. Noklusējuma konstruktors ir neredzams. Un, ja mēs rakstām konstruktoru bez argumentiem, kompilators neizveido noklusējuma konstruktoru. Tas tiek izņemts. Tas tiek pārslogots un tiek saukts par parametrizētu konstruktoru. Noklusējuma konstruktors tika mainīts uz parametrizēto konstruktoru. Bet parametrizētais konstruktors nevar mainīt noklusējuma konstruktoru. Noklusējuma konstruktors var būt netiešs vai tiešs. Ja mēs nepārprotami nedefinējam, mēs iegūstam netiešu noklusējuma konstruktoru. Ja konstruktoru rakstām manuāli, netiešais tiek ignorēts.
Piemērs:
Java // Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG { // Default Constructor GFG() { System.out.println('Default constructor'); } // Driver function public static void main(String[] args) { GFG hello = new GFG(); } }> Izvade
Default constructor>
Piezīme: Noklusējuma konstruktors nodrošina objekta noklusējuma vērtības, piemēram, 0, nulles utt. atkarībā no veida.
2. Parameterized Constructor Java
Konstruktoru, kuram ir parametri, sauc par parametrizēto konstruktoru. Ja mēs vēlamies inicializēt klases laukus ar savām vērtībām, tad izmantojiet parametrizētu konstruktoru.
Piemērs:
Java // Java Program for Parameterized Constructor import java.io.*; class Geek { // data members of the class. String name; int id; Geek(String name, int id) { this.name = name; this.id = id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); } }> Izvade
GeekName :Avinash and GeekId :68>
Atcerieties: vai konstruktors atgriež kādu vērtību?
Konstruktorā nav atgriešanas vērtību priekšrakstu, bet konstruktors atgriež pašreizējo klases gadījumu. Konstruktora iekšpusē varam rakstīt “atgriešanās”.
Tagad vissvarīgākā tēma, kas tiek izmantota, ir spēcīga OOPS iekļaušana konstruktoros, kas pazīstami kā konstruktora pārslodze. Tāpat kā metodes, mēs varam pārslogot konstruktorus, veidojot objektus dažādos veidos. Kompilators atšķir konstruktorus, pamatojoties uz parametru skaitu, parametru veidiem un parametru secību.
Piemērs:
Java // Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek { // constructor with one argument Geek(String name) { System.out.println('Constructor with one ' + 'argument - String : ' + name); } // constructor with two arguments Geek(String name, int age) { System.out.println( 'Constructor with two arguments : ' + ' String and Integer : ' + name + ' ' + age); } // Constructor with one argument but with different // type than previous.. Geek(long id) { System.out.println( 'Constructor with one argument : ' + 'Long : ' + id); } } class GFG { public static void main(String[] args) { // Creating the objects of the class named 'Geek' // by passing different arguments // Invoke the constructor with one argument of // type 'String'. Geek geek2 = new Geek('Shikhar'); // Invoke the constructor with two arguments Geek geek3 = new Geek('Dharmesh', 26); // Invoke the constructor with one argument of // type 'Long'. Geek geek4 = new Geek(325614567); } }> Izvade
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>
3. Kopēt Constructor Java
Atšķirībā no citiem konstruktoriem kopēšanas konstruktors tiek nodots citam objektam, kas kopē pieejamos datus no nodotā objekta uz jaunizveidoto objektu.
Piezīme: Java nav pieejams šāds iebūvēts kopiju konstruktors kā citās programmēšanas valodās, piemēram, C++, tā vietā mēs varam izveidot savu kopiju konstruktoru, nododot tās pašas klases objektu citai klases instancei (objektam).
Piemērs:
slēdža korpuss javaJava
// Java Program for Copy Constructor import java.io.*; class Geek { // data members of the class. String name; int id; // Parameterized Constructor Geek(String name, int id) { this.name = name; this.id = id; } // Copy Constructor Geek(Geek obj2) { this.name = obj2.name; this.id = obj2.id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. System.out.println('First Object'); Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); System.out.println(); // This would invoke the copy constructor. Geek geek2 = new Geek(geek1); System.out.println( 'Copy Constructor used Second Object'); System.out.println('GeekName :' + geek2.name + ' and GeekId :' + geek2.id); } }> Izvade
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>
Lai dziļi uzzinātu par konstruktoriem, tiek plaši izmantoti divi jēdzieni, kā norādīts tālāk:
- Konstruktora ķēde
- Kopēšanas konstruktors
FAQ Java konstruktoros
1. Kas ir konstruktors Java?
Java konstruktors ir a īpaša metode izmanto objektu inicializācijai.
2. Vai Java konstruktors var būt privāts?
Jā, konstruktoru var pasludināt par privātu. Privāts konstruktors tiek izmantots, lai ierobežotu objektu izveidi.