JavaRush /Java Blog /Random-TK /Kofe arakesmesi # 123. Java konstruktor - Tehniki söhbetd...

Kofe arakesmesi # 123. Java konstruktor - Tehniki söhbetdeşlik soraglary we jogaplary

Toparda çap edildi
Çeşme: Hackenoon

Gurluşykçy näme?

Konstruktor , synpyň ady bilen birmeňzeş bir synpda kesgitlenen ýörite usul. Java konstruktory, yzyna gaýtarma görnüşi bolmadyk usula meňzeýär. Kofe arakesmesi # 123.  Java konstruktor - Tehniki söhbetdeşlik soraglary we jogaplary - 1Gurluşykçylar obýektleriň başlangyjynda iň möhüm rol oýnaýarlar we bu makalada Java-da konstruktorlary öz içine alýan söhbetdeşlik soraglaryny sanap geçeris. Şeýle hem, Java-da konstruktorlaryň ähmiýeti barada öwrenersiňiz, söhbetdeşlikde Java konstruktorlary baradaky soraglara jogap bermäge kömek etjek kod mysallaryna we beýleki möhüm jikme-jikliklere serediň.

Gurluşykçylar näme üçin zerur? Jikme-jik düşündiriň

Talyp atly synpymyz bar diýeliň . Bizde mysal üýtgeýän ady we roll_number bar .
class Student{
String name;
int rollNo;
}
Indi, 1000 obýekt döreden bolsak, JVM bu bahalary adaty ady = null we rollNo = 0 bilen başlar . Bu aýratyn obýektleri kesgitlemek mümkin däl we obýektleriň hersine baha bellemek, erbet programmirleme amaly hasaplanýan kod mukdaryny artdyrar. Şonuň üçin munuň öňüni almak üçin konstruktorlar ulanylýar. Javaagny, Java-da konstruktoryň maksady, synp üýtgeýjileriniň bahasyny başlamak.

Java-da haýsy konstruktorlar bar?

Java-da üç dürli konstruktor bar:
  • Bellenen konstruktor
  • Argument ýok konstruktor
  • Parametrli konstruktor

Java-da deslapky konstruktor näme?

Bellenen konstruktor, synpda hiç bir konstruktor kesgitlenmedik bolsa, iş wagtynda JVM tarapyndan döredilen konstruktor. Deslapky konstruktoryň esasy işi, adaty görnüşlerine görä mysallaryň bahalaryny başlamakdyr. Java-da deslapky konstruktor:
class DefaultConstructor{
int id;
String name;
}
Indi bu synp üçin bir obýekt döredýän bolsak, JVM-iň içinde deslapky baha berlen deslapky konstruktor bolar.
DefaultConstructor df= new DefaultConstructor();
Indi bahany çap etsek, alarys:
Çap = df.id = 0.df.name = null.

Argument ýok konstruktor näme?

Argumentsiz konstruktor, mysallaryň bahasyny başlamak üçin aç-açan kesgitlenip bilinýän konstruktordyr. Mysal üçin:
class NoArgConstuctor{ int a; int b;

//No Argument Constructor
NoArgConstuctor(){
a = 10;
b = 20;
}

}

Parametrlenen konstruktor näme?

Parametrlenen konstruktor, mysallary başlamak üçin bir parametr kabul edýän konstruktor. Mysal üçin:
class ParameterizedConstuctor{
String name;
int age;
//Parameterized Constructor
ParameterizedConstuctor(String name, int age){
this.name = name;
this.age = age;
}
}

Konstruktory kesgitlemegiň düzgünleri haýsylar?

Gurluşykçylary kesgitlemek üçin birnäçe düzgüne eýermeli:
  • Gurluşygyň ady synpyň adyna laýyk gelmelidir.

  • Java-da konstruktoryň gaýdyp geliş görnüşi bolmaly däldir.

  • Gurluşykçylar üçin ulanylýan ýeke-täk üýtgedijiler:

    • köpçülik
    • gaýybana
    • goralýar
    • hususy
  • Gurluşykçylar islendik parametrleri alyp bilerler.

  • Gurluşykda jemleýji, sinhronlaşdyrylan, statiki we abstraktlara rugsat berilmeýär.

  • Konstruktor bedenindäki gaýdyp beriş beýanyny goldamaýar .

  • Konstruktorda zyňmak beýany bilen kadadan çykmalar bolup biler .

  • Konstruktor bilen zyňmak sözüni ulanmak kabul ederliklidir .

  • Konstruktor gaýtalanma döretmeli däldir.

Hususy konstruktory haçan ulanyp bileris?

Belli bir synpyň obýektlerini daşardan döretmek islemesek, ýapyk ýa-da hususy konstruktorlary ulanyp bileris. Gurluşykçylary şahsy yglan etmek bilen, diňe synpyň içinde obýektler döredip bileris. “Singleton” sapaklary hususy konstruktorlary ulanmagyň gowy mysalydyr.

Açyk kesgitlemesek, deslapky konstruktor giriş modifikatory näme bolar?

Adaty konstruktor giriş modifikatory hemişe synp üýtgediji bilen birmeňzeş bolar. Synp köpçülige açyk bolsa, gurluşykçy hem köpçülige açyk bolar. Synp hususy bolsa, konstruktor hem şahsy bolar. Beýleki giriş üýtgedijilerinde-de şeýle bolar.

Aşakdaky kod parçasynyň netijesini ýazyň we düşündiriň

class InterviewBit{
InterviewBit(){
System.out.println(" Welcome to InterviewBit ");
}
}
class ScalerAcademy extends InterviewBit{
ScalerAcademy(){
System.out.println(" Welcome to Scaler Academy by InterviewBit");
}
}
class Main{
public static void main(String[] args) {
ScalerAcademy sc = new ScalerAcademy();
}
}
Aboveokardaky kod çap ediler:
InterviewBit-e hoş geldiňiz. “InterviewBit” tarapyndan Skaler akademiýasyna hoş geldiňiz.
Bu çykyşy alarys, sebäbi super () ýa-da bu () açar sözi konstruktoryň birinji setirine goşmasak , JVM ony awtomatiki usulda iş wagtynda goýar. JVM muny başga bir synpdan miras galanlygy sebäpli edýär we işleýşi alnan synpda hem durmuşa geçiriler. Şeýlelik bilen, esasy synp mysallaryna deslapky bahalar berlende, JVM adaty ýagdaýda super () açar söz goşýar .

Kody gözden geçiriň we onuň dogrudygyny ýa-da nädogrydygyny görkeziň. Sebäbini düşündiriň

class InterviewBit{
InterviewBit(){
System.out.println(" Welcome to InterviewBit ");
}
}
class ScalerAcademy extends InterviewBit{
ScalerAcademy(){
this();
System.out.println(" Welcome to Scaler Academy by InterviewBit");
}
}
class Main{
public static void main(String[] args) {
ScalerAcademy sc = new ScalerAcademy();
}
}
Aboveokardaky kod nädogry, sebäbi Scaler Academy konstruktorynyň içinde şol bir konstruktor . Bu, rugsat berilmeýän konstruktorda gaýtalanma döredýär. Şoňa görä-de, gaýtalanýan konstruktoryň çagyryşy bilen baglanyşykly bir gezeklik ýalňyşlyk alarys.

Java-da bir synpda iki konstruktor ulanyp bilerismi?

Hawa, iki şerti göz öňünde tutup, bir synpda islendik sanly konstruktor ulanyp bileris:
  • Konstruktoryň parametrleri başgaça bolmaly.
  • Konstruktorda gaýtalanma bolmaly däldir.
Mysal. Şol bir “InterviewBit” synpynyň iki konstruktoryna serediň :
InterviewBit(){
    this("Scaler"); // Calling parameterized constructor
    System.out.println(" No Argument Constructor");
}
InterviewBit(String name){
    this(); // Calling no-arg constructor
    System.out.println(" Constructor with Parameters.");
}
Bu kod dogry däl, sebäbi ol gaýtalanma döreder. Argumentleri bolmadyk konstruktor parametrleri bolan konstruktor, parametrleri bolan konstruktor bolsa hiç hili argumentsiz konstruktor çagyrar.

Java-da bir konstruktory ýok edip bilerismi?

, Ok, konstruktoryň artykmaç ýüklemek düşünjesi Java-da ulanylmaýar.

Java-da konstruktor gutarnykly bolup bilermi?

Hiç bir konstruktor gutarnykly bolup bilmez. Sebäbi iň soňky açar sözler, alnan synpda bir usuly ýok etmegi bes etmek üçin ulanylýar. Aöne konstruktorda artykmaçlyk düşünjesi ulanylmaýar, şonuň üçin soňky açar söz ýazmagyň zerurlygy ýok . Konstruktoryň iň soňky açar sözüni ýazsak, gerekli gaýtarma görnüşi diýlip atlandyrylýan wagt ýalňyşlygy alarys, sebäbi düzüji oňa usul hökmünde seredýär.

Konstruktor Java-da statik bolup bilermi?

, Ok, Java konstruktory statik bolup bilmez. Sebäbi statiki açar sözler, bir agzanyň obýekt däl-de, bir klasa girmegini islänimizde ulanylýar. Conströne konstruktorlar obýektleri başlatmak üçin niýetlenendir, şonuň üçin düzüji oňa usul hökmünde garar. Gerekli görnüşdäki ýalňyşlyk alarys .

Super (), super we bu (), şu arasyndaky tapawudy aýdyp beriň

super () we bu () konstruktor jaňlarydyr. Diňe ene synpyň ýa-da häzirki synpyň konstruktoryny çagyrmak üçin ulanylýar. “Super” we “bu” öz synpynyň ýa-da esasy synpyň agzalaryny bellemek üçin ulanylýan açar sözlerdigine üns beriň. Aşakdaky koda serediň:
class InterviewBit{
    String message = " Welcome to InterviewBit";
}
public class Scaler extends InterviewBit
{
    String message = " Welcome to Scaler Academy";
    public void printMethod(){
        //this will print the message variable of the current class.
        System.out.println(this.message);

        //this will print the message variable of Base class.
        System.out.println(super.message);
    }
	public static void main(String[] args) {
		Scaler sa = new Scaler();
		sa.printMethod();
	}
}
Bu kod parçasynda, bu.message “ Skaler akademiýasyna hoş geldiňiz ” habaryny çap eder we super.message “ InterviewBit-e hoş geldiňiz ” atly habary çap eder . Ine, bu iki açar söz, esas we alnan synplaryň agzalaryna degişlidir.

Weýran edijiler näme? Java-da ýok ediji barmy?

Destok edijiler bir programma arkaly alnan ýady boşatmak üçin ulanylýar. Mysal üçin, ýerine ýetiriş wagtynda bir programma zerur bolsa, ýok ediji beýleki programmalar ulanyp biler ýaly şol ýady boşadýar. Java-da ýok ediji düşünje ýok, sebäbi Java-da ýady boşatmak işi zibil ýygnaýjy tarapyndan amala aşyrylýar.

Java-da konstruktor zynjyry näme?

Bir konstruktor başga bir konstruktordan çagyrylanda, muny konstruktor zynjyry diýip atlandyryp bolar. Konstruktor çagyryşy bir synpda edilmeli däl. Bu ene-atalar synpy üçin hem edilip bilner. Mysal üçin, aşakdaky surata serediň. Kofe arakesmesi # 123.  Java konstruktor - Tehniki söhbetdeşlik soraglary we jogaplary - 2Ondan soň, bu mysal üýtgeýjileriniň baha bahalary bilen obýekti başlatmak üçin koda seredip bileris:
class EmployeeAddess{
    int pinCode;
    String address;
    String mobNo;
    EmployeeAddress(int pinCode, String address, String mobNo){
        this.pinCode = pinCodel
        this.address = address;
        this.mobNo = mobNo;
    }
}
class Employees extends EmployeeAddress{
    int ID;
    String name;
    String designation;
    String department;
    Employee(int ID, String name, String designation,String department,
                    int pinCode, String address, String mobNo){

        //Calling Constructor for Base class to initialize the object.
        //This can be a constructor chaining.
        super(pinCode, address, mobNo);
        this.ID = ID;
        this.name = name;
        this.designation = designation;
        this.department = department;
    }
}
public class Main{
    Employee emp = new Employee(101, "XYX", "SDE", "Cloud", 123456, "no 150, xys, xys, INDIA", "999999999");
}
Aboveokardaky kodda, işgäriň jikme-jiklikleri we salgysy bilen Işgär synp obýektini döredýäris . Işgäriň salgysy synpy Işgärler synpyna miras galypdyr . Indi, bir salgy üçin obýektiň bahasyny dessine bermek üçin, işgäriň adresine aç-açan baha bermeýäris. Munuň ýerine, muny etmek üçin Işgärleriň salgysy synpynyň konstruktoryny ulanýarys . Super (argumentleriň) kömegi bilen bahalary başlamak üçin konstruktorlar zynjyryny emele getirýäris. Gurluşyk zynjyry şol.

Koddan programmanyň çykyşyny kesgitläň we jogabyňyzy düşündiriň.

class InterviewBit{
void InterviewBit(){
System.out.println(" Java Constructor interview questions by InterviewBit");
}
int InterviewBit(int val){
System.out.println(" Java Constructor. And Value = "+val);
}
}
public class Main{
InterviewBit ib1 = new InterviewBit();
InterviewBit ib2 = new InterviewBit();
}
InterviewBit () bu ýerde konstruktor däldigi üçin ýokardaky kod hiç zat çap etmez . Void we int açar sözler ulanylýandygy sebäpli , bir usula öwrülýär. Şonuň üçin usuly diýemzok. Hiç hili netije almarys, sebäbi obýektde aç-açan çagyrmaly usuly ýerine ýetirmek üçin.

Konstruktor ulanyp, obýektiň bahalaryny täze obýekte göçürmek üçin programma ýazyň

class Rectangle{
    int length;
    int breadth;
    Rectangle(int length, int breadth){
        this.length = length;
        this.breadth = breadth;
    }

    //Overloaded Constructor for copying the value of old Object to new object
    Rectangle(Rectangle obj){
        this.length = obj.length;
        this.breadth = obj.breadth;
    }
}
public class Main{
    Rectangle obj1 = new Rectangle(10, 5);

    //New Object of rectangle class will be created with the value from obj1.
    Rectangle obj2 = new Rectangle(obj1);
}
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION