JavaRush /Java Blog /Random-TK /Java dörediji üçin geçirilen söhbetdeşliklerden soraglary...

Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi. 4-nji bölüm

Toparda çap edildi
Hemmelere salam, bu gün Java dörediji üçin 250+ söhbetdeşlik soraglaryny derňemegi dowam etdirýärin . Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölümDerňewiň öňki bölekleri: birinji , ikinji , üçünji . Geliň, dowam edeliň.

29. Yzyny konstruktorda ulanmak mümkinmi?

Başararsyňyz, ýöne yzyna gaýtarmak hukugyna gaýtaryş bahasy bolmazdan . Returnagny, gaýdyp ulanyp bilersiňiz ; goşmaça koduň ýerine ýetirilişini gyssagly tamamlamak (kesmek) we obýektiň başlangyjyny tamamlamak üçin konstruktordaky hasaplamalar wagtynda kömekçi gurluşyk hökmünde. Mysal üçin, bizde Pişik synpy bar , we Pişik öýsüz bolsa - isHomeless = true , başlangyç işini tamamlamaly we beýleki meýdanlary doldurmaly däl (ahyrsoňy, pişik öýsüz bolany üçin bize mälim däl):
public Cat(int age, String name, boolean isHomeless) {
   if (isHomeless){
       this.isHomeless = isHomeless;
       return;
   }
   this.isHomeless = isHomeless;
   this.age = age;
   this.name = name;
}
Specificöne belli bir gymmatlyklar barada aýdylanda, konstruktor bahany yzyna gaýtarmak üçin ulanyp bilmeýär, sebäbi:
  • konstruktor yglan edilende, yzyna gaýdyp gelýän görnüşe meňzejek zat bolmaz;
  • Adatça, dessine konstruktor gönüden-göni diýilýär;
  • Konstruktor usul däl: ýeke-täk maksady mysal üýtgeýänlerini başlamak we täze operator obýekt döretmek üçin jogapkärdir .
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölüm

30. Konstruktordan kadadan çykmak mümkinmi?

Gurluşykçylar kadadan çykmalar bilen usullar bilen birmeňzeş işleşýärler. Usullar usulyň sözbaşysyna <ExceptionType> zyňmak bilen kadadan çykmalary taşlamaga mümkinçilik berýän bolsa , konstruktor muny etmäge rugsat berýär, miras konstruktoryny miras alanda we kesgitlänimizde, kadadan çykma görnüşini giňeldip bileris. Mysal üçin, IOException -> Kadadan çykma (ýöne tersine däl). Konstruktor tarapyndan kadadan çykma üçin mysal hökmünde, Pişik synpyny alalyň . Döredenimizde, konsoldan adyny we ýaşyny girizmek isleýäris:
public Cat() throws IOException {
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   this.name = reader.readLine();
   this.age = Integer.parseInt(reader.readLine());
}
Reader.readLine () IOException-y zyňýandygy sebäpli , sözbaşyda mümkin bolup biläýjek kadadan çykma hökmünde kesgitleýäris.

31. Synp sözbaşy haýsy elementlerden durýar? Mysal ýazyň

Synp sözbaşysyny düzýän elementler barada aýdanymyzda, kiçijik diagramma seredeliň:
  • hökmany komponentler ýaýyň içinde bolar>
  • islege bagly - {in
{synp giriş modifikatory} {synp statikligi} {synp gutarnykly} {synp abstraksiýasy} <class name> {ene-atalar synpyndan miras} {interfeýsi durmuşa geçirmek} Şeýlelik bilen, bizde bar bolan zatlar: {synp giriş modifikatory} - diňe köpçülige üýtgedijiler we ýiten giriş modifikatory, ýagny synp üçin elýeterli . {synp statiki} - statik, bu synpyň statikdigini, diňe içki synplara (beýleki synplaryň içindäki synplar) degişlidigini görkezýän üýtgediji. {synpyň gutarnyklylygy} - ýadymyzda bolsa, bu iň soňky üýtgediji , onuň gatnaşmagynda synp miras almaýar (gutudan mysal - Setir ). {synp abstraksiýasy} - üýtgediji - abstrakt , bu synpyň durmuşa geçirilmedik usullarynyň bolup biljekdigini görkezýär. Bu üýtgediji soňky üýtgediji bilen gapma-garşy gelýär , ýagny synp sözbaşysynda diňe biri bolup biler, sebäbi abstrakt üýtgediji berlen synpyň miras aljakdygyny we abstrakt bölekleriniň durmuşa geçiriljekdigini aňladýar. Iň soňky bolsa , bu synpyň soňky (soňky) wersiýasydygyny we oňa miras bolup bilmejekdigini görkezýär. Aslynda, iki üýtgeýjini bir wagtyň özünde ulanmak manysyz bolar we düzüji bize muny etmäge rugsat bermez. <class> synp deklarasiýasyny görkezýän zerur açar söz. <synp ady> belli bir Java synpynyň kesgitleýjisi bolan ýönekeý synp ady. Doly hünärli synp ady doly hünärli paket adyndan durýar. + ýönekeý synpyň ady. {ene-atalar synpyndan miras} - giňeldilen açar söz ulanyp, ene synpy (bar bolsa) görkezmek . Mysal üçin, .. ParentClass-y uzadýar . {interfeýsiň ýerine ýetirilişi} - açar söz ulanyp, bu synpyň ýerine ýetirýän interfeýslerini görkezmek . Mysal üçin: ... FirstInterface, SecondInterface ... Bir synp sözbaşysynyň mysaly hökmünde, Pişikden miras galan we WildAnimal interfeýsini ýerine ýetirýän Arslan synpynyň sözbaşysyny göz öňünde tutuň :
public final class Lion extends Cat implements WildAnimal
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölüm

32. Usul sözbaşy haýsy elementlerden durýar? Mysal ýazyň

Againene-de usul sözbaşysyny düzýän elementlere seredeniňde, kiçijik diagramma serediň:
  • hökmany komponentler ýaýyň içinde <>
  • islege bagly - {in
{giriş üýtgediji} {usul statiki} {usul abstraksiýa} {usul gutarnykly} {sinhronlaşdyryjy üýtgediji} {ýerli üýtgediji} <yzyna gaýtaryş gymmaty > - usul üçin ähli giriş üýtgedijileri elýeterli: köpçülige açyk , goralýan , asyl , şahsy . {usul statik} - statik , bu usulyň statikdigini, ýagny bir obýekte däl-de, bir klasa baglydygyny görkezýän üýtgediji. {usuly abstraksiýa} usulyň ýerine ýetirilişiniň (bedeniniň) ýokdugyny görkezýän abstrakt üýtgediji . Dogry işlemek üçin usulyň berilýän synpy üçin abstrakt üýtgediji hem gerek . Synp sözbaşysynda bolşy ýaly, bu üýtgediji soňky üýtgediji bilen gapma-garşy , ýöne oňa goşmaça, statiki üýtgediji bilen hem gapma-garşy gelýär , sebäbi abstrakt usul nesildäki usuly ýok etmegi aňladýar we statiki usullar ýok edilmeýär. usulyň gutarnyklylygy} - jemleýji - bu usulyň ýok edilip bilinmejekdigini görkezýän üýtgediji. {sinhronizasiýa modifikatory} - sinhronlaşdyrylan - bu usulyň, şol bir wagtyň özünde dürli sapaklardan girmekden goralýandygyny aňladýan üýtgediji. Usul statik däl bolsa, obýektiň bu muteeksinde ýapylýar. Usul statik bolsa, häzirki synpyň muteeksinde ýapylýar. {ýerli üýtgediji} - ýerli - bu üýtgediji usulyň başga programmirleme dilinde ýazylandygyny görkezýär. <gaýtarma bahasy> usulyň yzyna gaýtarylmaly bahasynyň görnüşidir. Eger hiç zady yzyna gaýtarmaly däl bolsa, boş . <usulyň ady> usulyň ady, ulgamdaky kesgitleýji. {usul argumentleri} usulyň alýan argumentleri (parametrleri): onuň işleýşini amala aşyrmak üçin zerurdyr. {zyňylýan kadadan çykmalar} - throwsExceptionType - bu usulyň zyňyp bilýän barlanylan kadadan çykmalar sanawy. Usul sözbaşysynyň mysaly hökmünde men muny bererin:
public static void main(String[] args) throws IOException

33. Esasy obýektde kesgitlenmedik bolsa, nesil obýektinde deslapky konstruktor dörediň (ýöne başga bir konstruktor kesgitlenýär)

Soragyň özüne doly düşünemok, belki -de , meselem, ene-atada käbir adaty gurluşykçymyzyň bardygyny aňladýar:
public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
Şonuň üçin ata-babalar synpynda esasy konstruktory doldurjak (jaň etjek) konstruktory kesgitlemeli:
public  class Lion extends Cat {

   public Lion(int age, String name) {
       super(age, name);
   }
}
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölüm

34. Bu açar söz haçan ulanylýar?

Java-da munuň iki dürli manysy bar. 1. Häzirki obýekte salgylanma hökmünde, şu.age = 9 . .Agny, bu atlandyrylan we şu koduň ulanylýan obýektine degişlidir . Esasy wezipe, koduň okalmagyny ýokarlandyrmak we düşnüksizlikden gaça durmakdyr. Mysal üçin, içerki synp meýdançasynyň ady we usul argumenti birmeňzeş bolsa:
public void setName(String name) {
   this.name = name;
}
.Agny, bu.name obýektiň adynyň bir usulydyr, bu salgylanma statiki usullarda ulanylyp bilinmez. 2. muny konstruktordaky (baha) ýaly usul jaňy görnüşinde ulanyp bolýar . Bu ýagdaýda şol bir synpyň başga bir konstruktoryna çagyryş bolar. Gysgaça aýdanyňda, obýekt döredilende birbada iki konstruktor çagyryp bilersiňiz:
public Cat(int age, String name) {
   this(name);
   this.age = age;
}

public Cat(String name) {
   this.name = name;
}
Pişik obýekti döredilende we ilkinji konstruktor diýlende, obýektiň iki meýdany hem çagyrylar we üstünlikli başlar. Birnäçe nuans bar:
  1. bu () diňe konstruktorda işleýär.
  2. Başga bir konstruktora salgylanma konstruktor blokynyň (korpusynyň) birinji setirinde bolmaly. Şonuň üçin berlen synpyň birden köp (beýleki) konstruktoryny bir konstruktorda çagyryp bolmaz.
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-5-nji bölümBu makalada has köp mysal bar .

35. Başlangyç näme?

Meniň düşünişime görä, bu soragda adaty we statistiki başlangyç bloklary hakda gürleşýäris. Ilki bilen başlangyjyň nämedigini ýada salalyň. Başlamak, döretmek, işjeňleşdirmek, işe taýýarlyk, parametrleri kesgitlemekdir. Programmany ýa-da komponenti ulanmaga taýyn ýagdaýa getirmek. Objectadyňyzda bolsa, obýekt döredilende synp üýtgeýjisi deklarasiýa bilen gönüden-göni başlap biler:
class Cat {
   private int age = 9;
   private  String name = "Tom";
Ora-da ony konstruktoryň üsti bilen düzüň:
class Cat {
   private int age;
   private  String name;

   public Cat(int age, String name) {
       this.age = age;
       this.name = name;
   }
Anotheröne başga bir ýol bar: adyň (usul ýa- da konstruktor ýaly) synpyň içinde egri ýaýlara meňzeýän başlangyç blok arkaly içerki obýekt üýtgeýjisini bellemek :
class Cat {
   private int age;
   private  String name;

   {
       age = 10;
       name = "Tom";
   }
.Agny, başlangyç blok, bir obýekt döredilende ýüklenýän kod bölegi. Adatça, şular ýaly bloklar synp ýüklenende zerur bolan käbir çylşyrymly hasaplamalary ýerine ýetirmek üçin ulanylýar. Bu hasaplamalaryň netijelerini üýtgeýänler üçin baha hökmünde kesgitläp bolýar. Mundan başga-da, yzygiderli başlangyç bloklaryndan başga-da, birmeňzeş görünýän, ýöne egri ýaýdan öň statiki açar söz bar :
class Cat {
   private static int age;
   private static String name;

   static{
       age = 10;
       name = "Tom";
   }
Bu blok öňki blok bilen doly meňzeýär. Eachöne adaty bir zat başlananda başlasa, statik synp ýüklenende diňe bir gezek başlar. Şeýle blokda, adatça, statiki synp üýtgeýjileriniň soňraky başlangyjy üçin käbir çylşyrymly hasaplamalar hem edilýär. Statiki usullar ýaly statiki blokda-da şol çäklendirmeler ulanylýar: statik däl maglumatlary ulanyp bilmeýär, şeýle hem häzirki obýekte salgylanma - şu . Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölümOndan soň, başlangyç bloklarynyň dörän pursatyna has gowy düşünmek üçin synpyň başlangyç tertibini (atasy bilen bilelikde) görüp bileris.

36. Jemgyýetçilik synpyny miras almak üçin Çaga ene-atany uzadýar, obýektiň başlangyç tertibini ýazyň

Çaga synpy ýüklenende başlangyç tertibi aşakdaky ýaly bolar:
  1. Ene synpynyň statiki meýdanlary .
  2. Ene synpy üçin statiki başlangyç blok .
  3. Çaga synpynyň statiki meýdanlary .
  4. Çaga synpy üçin statiki başlangyç blok .
  5. Ene synpynyň statik däl meýdanlary .
  6. Ene synpy üçin statiki başlangyç blok däl .
  7. Ene synpy üçin konstruktor .
  8. Çaga synpynyň statik däl meýdanlary .
  9. Çaga synpy üçin statiki başlangyç blok däl .
  10. Çaga synpynyň gurluşykçysy .
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-7-nji bölümIne, iş ýüzünde başlangyç tertibini düşündirýän gysga makala.

37. Synplaryň (obýektleriň) arasynda haýsy gatnaşyklary bilýärsiňiz?

Java-da synplaryň arasynda iki görnüşli gatnaşyk bar:
  • IS-A gatnaşyk
OOP-daky IS-A ýörelgesi synp mirasyna ýa-da interfeýsiň ýerine ýetirilmegine esaslanýar. Mysal üçin, Lionolbars synpy Pişikden miras alýan bolsa , biz arslan pişik diýýäris :
Lion IS-A Cat
(ýöne her pişik arslan däl ) Interfeýsler bilen ýagdaý birmeňzeş. “Arslan” synpy “WildAnimal” interfeýsini durmuşa geçirýän bolsa , onda olar hem gatnaşykda:
Lion IS-A WildAnimal
  • HAS-A gatnaşyklar
Gatnaşyklaryň bu görnüşi, “birleşme” diýlip atlandyrylýan beýleki synplar tarapyndan sapaklary ulanmaga esaslanýar. Birleşme, başga bir synpa (ýa-da hatda biri-birine) degişli bir synpdyr. Mysal üçin, Awtoulag synpy engerolagçy synpyna degişli bolup biler we bu gatnaşyk bolar:
Car HAS-A Passenger
Tersine: ýolagçynyň Awtoulag salgylanmasy bar bolsa , bu gatnaşyk bolar:
Passenger HAS-A Car

38. Jisimleriň arasynda haýsy baglanyşyk bilýärsiňiz?

Agregasiýa we kompozisiýa aýratyn birleşmekden başga zat däl. Agregasiýa , bir obýektiň beýlekisiniň bir bölegi bolan gatnaşyk. Mysal üçin, ýolagçy awtoulagda bolup biler. Mundan başga-da, birnäçe ýolagçy bolup biler ýa-da asla bolmaz (eger Tesla hakda aýdýan bolsak, sürüjiniň zerurlygy ýok). Mysal üçin:
public class Car {
   private List passengers = new ArrayList<>();

 void setPassenger(Passenger passenger) {
     passengers.add(passenger);
 }

   void move() {
       for (Passenger passenger : passengers) {
           System.out.println("Перевозка пассажира - " + passenger.toString());
       }
       passengers.clear();
   }
}
Passengersagny, ýolagçylaryň sany (ýa-da asla barlygy) barada alada etmeýäris: Awtoulag synpynyň işleýşi muňa bagly däl. Agregasiýa, bir obýekt başga bir obýekt tarapyndan ulanylanda, birinjisiniň başga obýektlerde ulanylyp bilinjekdigini aňladýar. Mysal üçin, şol bir okuwçy trikota club klubynyň hem, rokkerleriň aýdym-saz toparynyň agzasy bolup biler we şol bir wagtyň özünde iňlis dilini öwrenýänleriň toparyna baryp biler. Düşünşiňiz ýaly, jemlemek synplaryň arasyndaky has birleşýän gatnaşykdyr. Bir obýekt diňe bir başga bir zadyň bölegi bolman, eýsem beýleki obýektiň işi birinjisine gaty bagly bolanda, Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölümkompozisiýa has berk gatnaşykdyr. Mysal üçin, awtoulag dwigateli. Dwigatel awtoulagsyz bar bolsa-da, onuň daşyndan peýdasyz. Dogrusy, awtoulag motorsyz işläp bilmez:
public class Car {
   private Engine engine;

   public Car(Engine engine) {
       this.engine = engine;
   }

   void startMoving() {
       engine.start();
           ...
   }
Kompozisiýa, haýsydyr bir obýekt başga bir obýekt tarapyndan ulanylanda, birinjisiniň başga birine degişli bolup bilmejekdigini aňladýar. Mysal üçin gaýdyp gelsek, hereketlendiriji diňe bir ulaga degişli bolup biler, ýöne bir wagtyň özünde iki ýa-da ondanam köp bolup bilmez. Belki, şu gün şu ýerde durarys.Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  4-nji bölüm
Tapgyryň beýleki materiallary:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION