JavaRush /Блоги Java /Random-TG /Таҳлили саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари ...

Таҳлили саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java. Қисми 4

Дар гурӯҳ нашр шудааст
Салом ба ҳама, имрӯз ман таҳлor 250+ саволҳои мусоҳибаро барои таҳиягари Java идома медиҳам. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Қисми 4 - 1Қисмҳои қаблии таҳлил: якум , дуюм , сеюм . Пас биёед идома диҳем.

29. Оё бозгаштро дар конструктор истифода бурдан мумкин аст?

Шумо метавонед, вале бе арзиши бозгашт ба ҳуқуқи бозгашт . Яъне, шумо метавонед бозгаштро истифода баред; ҳамчун сохтмони ёрирасон ҳангоми ҳисобҳо дар конструктор бо мақсади фаврӣ анҷом додани (қатъ кардан) иҷрои codeи минбаъда ва ба итмом расонидани инициализатсияи an object. Масалан, мо як синфи Cat дорем ва агар Cat бехона бошад - isHomeless = true , мо бояд оғозкуниро ба итмом расонем ва дигар майдонҳоро пур накунем (охир, онҳо ба мо номаълуманд, зеро гурба бехона аст):
public Cat(int age, String name, boolean isHomeless) {
   if (isHomeless){
       this.isHomeless = isHomeless;
       return;
   }
   this.isHomeless = isHomeless;
   this.age = age;
   this.name = name;
}
Аммо вақте ки сухан дар бораи арзишҳои мушаххас меравад, созанда наметавонад бозгаштро барои баргардонидани арзиш истифода барад, зеро:
  • ҳангоми эълон кардани конструктор шумо чизе ба намуди бозгаште нахоҳед дошт;
  • Одатан, конструктор ҳангоми эҷодкунӣ ба таври ғайримустақим даъват карда мешавад;
  • Конструктор усул нест: он як механизми алоҳидаест, ки ҳадафи ягонаи он оғоз кардани тағирёбандаҳои мисол аст ва оператори нав барои сохтани an object масъул аст .
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-2

30. Оё истисноро аз конструктор партофтан мумкин аст?

Конструкторҳо бо истисноҳо маҳз ҳамон тавре ки усулҳо кор мекунанд. Ва агар усулҳо ба мо имкон диҳанд, ки бо навиштани партовҳои <ExceptionType> дар сарлавҳаи метод истисноҳо гузорем , пас созанда ба мо имкон медиҳад, ки ин корро анҷом диҳем ва инчунин ҳангоми мерос гирифтан ва муайян кардани созандаи меросгузор, мо метавонем навъи истисноро васеъ кунем. Масалан, IOException -> Истисно (вале на баръакс). Ҳамчун мисол барои партофтани истисно аз ҷониби конструктор, биёед синфи Cat -ро гирем . Биёед бигӯем, ки ҳангоми сохтани он мо мехоҳем аз консол ном ва синну солро ворид кунем:
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-ро мепартояд, мо онро дар сарлавҳа ҳамчун истиснои эҳтимолии партофташуда муайян мекунем.

31. Сарлавҳаи синф аз кадом элементҳо иборат аст? Мисол нависед

Дар бораи унсурҳое, ки сарлавҳаи синфро ташкил медиҳанд, сухан ронем, биёед ба диаграммаи хурд назар андозем:
  • ҷузъҳои ҳатмӣ дар қавс <> ҷойгир карда мешаванд
  • ихтиёрӣ - дар {}
{тағйирдиҳандаи дастрасии синф}{статикии синф}ниҳоии синф}абстраксияи синф} <номи синф>{мерос аз синфи волидайн} {амалии интерфейс} Пас, он чизе ки мо дорем: {тағйирдиҳандаи дастрасии синф} - танҳо тағирдиҳандаҳои оммавӣ ва тағирдиҳандаи дастрасии гумшуда, яъне default , барои синф дастрасанд . {class static} - статикӣ тағирдиҳандаест, ки нишон медиҳад, ки ин синф статикӣ буда, танҳо ба синфҳои дохилӣ (синфҳо дар дохor синфҳои дигар) татбиқ мешавад. {Класс ниҳоии} - тавре ки мо дар ёд дорем, ин тағирдиҳандаи ниҳоӣ аст , ки дар ҳузури он синф мероснашаванда мешавад (мисол аз қуттии - String ). {class abstraction} - тағирдиҳанда - абстракт , ки нишон медиҳад, ки ин синф метавонад усулҳои иҷронашуда дошта бошад. Ин тағирдиҳанда бо тағирдиҳандаи ниҳоӣ мухолиф аст , яъне танҳо яке аз онҳо метавонад дар сарлавҳаи синф бошад, зеро тағирдиҳандаи абстрактӣ маънои онро дорад, ки синфи додашуда мерос гирифта, қисмҳои абстрактии он амалӣ карда мешаванд. Ва ниҳоӣ нишон медиҳад, ки ин versionи ниҳоии (ниҳоии) синф аст ва онро мерос гирифтан мумкин нест. Дар асл, истифодаи ҳарду тағирдиҳанда дар як вақт бемаънӣ хоҳад буд ва компилятор ба мо имкон намедиҳад, ки ин корро кунем. <синф> калимаи калидии ҳатмист, ки эъломияи синфро нишон медиҳад. <номи синф> номи оддии синф аст, ки идентификатори синфи мушаххаси Java мебошад. Номи синфи пурраи тахассусӣ аз номи бастаи пурраи тахассусӣ + иборат аст. + номи оддии синф. {мерос аз синфи волидайн} - муайян кардани синфи волидайн (агар вуҷуд дошта бошад) бо истифода аз калимаи калидӣ extends . Масалан, .. -ро васеъ мекунад ParentClass . {интерфейси татбиқи} - муайян кардани интерфейсҳое, ки ин синф амалӣ мекунад (агар вуҷуд дошта бошад) бо истифода аз калимаи калидии implements . Масалан: ... амалӣ мекунад FirstInterface, SecondInterface ... Хуб, ҳамчун намунаи сарлавҳаи синф, сарлавҳаи синфи Lion -ро баррасӣ кунед , ки аз Cat мерос гирифта, интерфейси WildAnimal -ро амалӣ мекунад :
public final class Lion extends Cat implements WildAnimal
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-3

32. Сарлавҳаи метод аз кадом элементҳо иборат аст? Мисол нависед

Боз, ҳангоми дидани унсурҳое, ки сарлавҳаи методро ташкил медиҳанд, диаграммаи хурдеро баррасӣ кунед, ки дар он ҷо:
  • ҷузъҳои ҳатмӣ дар қавс <> оварда шудаанд
  • ихтиёрӣ - дар {}
{тағйирдиҳандаи дастрасӣ} усули статикӣ} абстраксияи метод} {тағйирдиҳандаи синхронизатсия} {тағйирдиҳандаи аслӣ} арзиши баргардонидани >< номи метод> <(> {далелҳои усул} <)>{истисноҳои партофташуда} {тағирдиҳандаи дастрасӣ } — ҳама тағирдиҳандаҳои дастрасӣ барои усул дастрасанд: public , protected , default , private . {method static} - static тағирдиҳандаест, ки нишон медиҳад, ки ин усул статикӣ аст, яъне он на ба an object, балки ба синф вобаста аст. {method abstraction} тағирдиҳандаи абстрактӣ мебошад , ки нишон медиҳад, ки татбиқи (бадан) усул вуҷуд надорад. Барои дуруст кор кардан, ба шумо инчунин як тағирдиҳандаи абстрактӣ барои синфе, ки дар он метод пешбинӣ шудааст, лозим аст. Тавре ки дар сарлавҳаи синф ин тағирдиҳанда бо тағирдиҳандаи ниҳоӣ мухолифат мекунад , аммо илова бар он, он бо тағирдиҳандаи статикӣ низ мухолифат мекунад , зеро усули абстрактӣ барҳам додани усулро дар насл дар назар дорад ва усулҳои статикӣ бекор карда намешаванд. {ниҳоии усул} - ниҳоӣ - тағирдиҳандае, ки нишон медиҳад, ки ин усулро бекор кардан мумкин нест. {тағйирдиҳандаи синхронизатсия} - ҳамоҳангшуда - тағирдиҳандае, ки маънои онро дорад, ки ин усул аз дастрасии ҳамзамон ба он аз риштаҳои гуногун ҳифз шудааст. Агар усул статикӣ набошад, он дар ин мутекси an object баста мешавад. Агар усул статикӣ бошад, он дар мутекси синфи ҷорӣ баста мешавад. {тағйирдиҳандаи аслӣ} - модарӣ - ин тағирдиҳанда нишон медиҳад, ки усул бо забони дигари барномасозӣ навишта шудааст. <арзиши баргардонидан> навъи арзишест, ки усул бояд баргардонад. Агар он набояд чизе барнагардонад, бекор кунед . <номи усул> номи усул, идентификатори он дар система мебошад. {аргументҳои метод} аргументҳо (параметрҳое), ки усул мегиранд: онҳо барои амалисозии фаъолияти он заруранд. {истисноҳои партофташаванда} - throwsExceptionType - рӯйхати истисноҳои санҷидашуда, ки ин усул метавонад партояд. Ва ҳамчун намунаи сарлавҳаи усул, ман инро медиҳам:
public static void main(String[] args) throws IOException

33. Дар an objectи насли конструктори пешфарз созед, агар он дар an objectи асосй муайян нашуда бошад (вале конструктори дигар муайян карда шудааст)

Ман худи саволро пурра намефаҳмам, аммо шояд ин маънои онро дорад, ки масалан, дар волидайн мо як конструктори фармоишӣ дорем:
public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
Аз ин рӯ, дар синфи аҷдодӣ, мо бешубҳа бояд конструктореро муайян кунем, ки конструктори волидайнро пур кунад (даъват кунад):
public  class Lion extends Cat {

   public Lion(int age, String name) {
       super(age, name);
   }
}
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-4

34. Ин калимаи калидї кай истифода мешавад?

Дар Java, ин ду маънои гуногун дорад. 1. Ҳамчун истинод ба an objectи ҷорӣ, мисли this.age = 9 . Яъне, ин ба an objectе дахл дорад, ки дар он он даъват шуда буд ва codeи истифодаи ин ба он ишора мекунад . Вазифаи асосӣ ин баланд бардоштани хониши code ва пешгирӣ кардани номуайянӣ мебошад. Масалан, агар номи майдони синфи дохилӣ ва аргументи усул якхела бошад:
public void setName(String name) {
   this.name = name;
}
Яъне this.name майдони номи an object аст , далели метод аст.Ин истинодро дар усулҳои статикӣ истифода бурдан мумкин нест. 2. ин метавонад дар созанда дар шакли даъвати метод истифода шавад, ба монанди this(value) . Дар ин ҳолат, он занг ба конструктори дигари ҳамон синф хоҳад буд. Хулоса, шумо метавонед ҳангоми сохтани an object якбора ду конструкторро даъват кунед:
public Cat(int age, String name) {
   this(name);
   this.age = age;
}

public Cat(String name) {
   this.name = name;
}
Вақте ки an objectи Cat сохта мешавад ва конструктори аввал даъват мешавад, ҳарду майдони an object даъват карда мешаванд ва бомуваффақият оғоз карда мешаванд. Якчанд нозукиҳо вуҷуд доранд:
  1. this() танҳо дар конструктор кор мекунад.
  2. Истинод ба конструктори дигар бояд дар сатри аввали блоки созанда (бадан) бошад. Аз ин рӯ, дар як конструктор зиёда аз як (дигар) конструктори синфи додашударо даъват кардан мумкин нест.
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-5Намунаҳои бештар дар ин мақола оварда шудаанд .

35. Инициализатор чист?

То ҷое ки ман фаҳмидам, дар ин савол сухан дар бораи блокҳои ибтидоӣ ва оморӣ меравад. Аввалан, биёед дар хотир дорем, ки ибтидосозӣ чист. Интициализатсия ин эҷод, фаъолсозӣ, омодагӣ ба кор, муайян кардани параметрҳо мебошад. Ба ҳолати омодагӣ барои истифода овардани барнома ё ҷузъ. Тавре ки шумо дар хотир доред, ҳангоми эҷоди an object, тағирёбандаи синфро мустақиман пас аз эъломия оғоз кардан мумкин аст:
class Cat {
   private int age = 9;
   private  String name = "Tom";
Ё онро ба таври беруна тавассути созанда насб кунед:
class Cat {
   private int age;
   private  String name;

   public Cat(int age, String name) {
       this.age = age;
       this.name = name;
   }
Аммо роҳи дигар вуҷуд дорад: насб кардани тағирёбандаи an objectи дохилӣ тавассути блоки оғозёбӣ, ки мисли қавсҳои ҷингила { } дар дохor синф бе ном (ба мисли усул ё созанда) ба назар мерасад:
class Cat {
   private int age;
   private  String name;

   {
       age = 10;
       name = "Tom";
   }
Яъне, блоки оғозёбӣ як пораи codeест, ки ҳангоми сохтани an object бор карда мешавад. Одатан, чунин блокҳо барои иҷрои баъзе ҳисобҳои мураккаб истифода мешаванд, ки ҳангоми боркунии синф заруранд. Натиҷаҳои ин ҳисобкуниро метавон ҳамчун арзишҳо барои тағирёбандаҳо муайян кард. Илова бар блокҳои муқаррарии оғозёбӣ, блокҳои статикӣ мавҷуданд, ки ба назар якхелаанд, вале калимаи калидии статикӣ пеш аз қавси ҷингила доранд :
class Cat {
   private static int age;
   private static String name;

   static{
       age = 10;
       name = "Tom";
   }
Ин блок бо блоки қаблӣ комилан якхела аст. Аммо агар an objectи муқаррарӣ ҳангоми оғоз кардани ҳар як an object ба кор андохта шавад, он гоҳ an objectи статикӣ танҳо як маротиба, вақте ки синф бор карда мешавад, фаъол мешавад. Дар чунин блок, чун ќоида, барои инициализатсияи минбаъдаи таѓйирёбандањои синфи статикї баъзе њисобњои мураккаб низ иљро карда мешаванд. Маҳдудиятҳо ба блоки статикӣ, ба мисли усулҳои статикӣ татбиқ мешаванд: он наметавонад маълумоти ғайристатикӣ ва инчунин истинод ба an objectи ҷорӣ - ин . Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-6Минбаъд, мо метавонем тартиби инициализатсияи синфро (якҷоя бо аҷдоди он) бубинем, то лаҳзаи ба кор андохтани блокҳои оғозёбиро беҳтар дарк кунем.

36. Барои мерос гирифтани синфи ҷамъиятии синфи Child extensions Parent, тартиби оғозкунии an objectро нависед

Вақте ки синфи Child бор карда мешавад, тартиби оғозкунӣ чунин хоҳад буд:
  1. Майдонҳои статикии синфи волидайн .
  2. Блоки оғозкунии статикӣ барои синфи волидайн .
  3. Майдонҳои статикии синфи Child .
  4. Блоки оғозкунии статикӣ барои синфи Child .
  5. Майдонҳои ғайристатикии синфи волидайн .
  6. Блоки оғозкунии статикӣ барои синфи Волидон нест .
  7. Конструктор барои синфи волидайн .
  8. Майдонҳои ғайристатикии синфи Child .
  9. Блоки оғозкунии статикӣ барои синфи Child нест .
  10. Сохтмони синфи кӯдакон .
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-7Дар ин ҷо як мақолаи кӯтоҳест, ки тартиби оғозро дар амал шарҳ медиҳад.

37. Кадом муносибатњоро байни синфњо (an objectњо) медонед?

Дар Java ду намуди муносибатҳо байни синфҳо мавҷуданд:
  • IS- Муносибат
Принсипи IS-A дар OOP ба мероси синф ё татбиқи интерфейс асос ёфтааст. Масалан, агар синфи Lion аз Cat мерос гирад , мо мегӯем, ки Lion Cat аст :
Lion IS-A Cat
(вале на ҳар гурба Шер аст ) Вазъият бо интерфейсҳо маҳз ҳамин аст. Агар синфи Lion интерфейси WildAnimal -ро татбиқ кунад , он гоҳ онҳо низ дар робита ҳастанд:
Lion IS-A WildAnimal
  • Муносибатҳои HAS-A
Ин навъи муносибат ба истифодаи синфҳо аз ҷониби синфҳои дигар, ки онро "ассотсиатсия" низ меноманд, асос ёфтааст. Ассотсиатсия як синфест, ки ба синфи дигар (ё ҳатто ба ҳамдигар) ишора мекунад. Масалан, синфи Car метавонад ба синфи Passenger ишора кунад ва ин муносибат хоҳад буд:
Car HAS-A Passenger
Ва баръакс: агар Мусофир ба мошин истинод дошта бошад , пас ин муносибат хоҳад буд:
Passenger HAS-A Car

38. Кадом робитањои ассосиативии байни предметњоро медонед?

Ҷамъоварӣ ва таркиб ҷуз ҳолатҳои махсуси ассотсиатсия чизи дигаре нестанд. Агрегатсия муносибатест, ки дар он як an object ҷузъи an objectи дигар аст. Масалан, мусофир метавонад дар мошин бошад. Инчунин, метавонад якчанд мусофир бошад ё тамоман набошад (агар мо дар бораи Tesla сухан ронем, пас ронанда талаб карда намешавад). Барои намуна:
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();
   }
}
Яъне, мо ба шумораи мусофирон аҳамият намедиҳем (ё умуман вуҷуд доранд): фаъолияти синфи Car аз ин вобаста нест. Агрегатсия инчунин маънои онро дорад, ки вақте ки an object аз ҷониби an objectи дигар истифода мешавад, an objectи аввал метавонад дар дигар an objectҳо истифода шавад. Масалан, як талаба метавонад аъзои кружоки бофандагй ва хам гурухи мусикии рокерхо бошад ва дар айни замон ба гурухи омузандагони забони англисй равад. Тавре ки шумо мефаҳмед, ҷамъбаст як муносибати сусттари ассотсиативии байни синфҳо мебошад. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-8Таркиб муносибати боз ҳам сахттар аст, вақте ки an object на танҳо ҷузъи an objectи дигар аст, балки кори an objectи дигар аз аввал хеле вобаста аст. Масалан, муҳаррики мошин. Гарчанде ки муҳаррик бидуни мошин вуҷуд дошта бошад ҳам, берун аз он бефоида аст. Хуб, мошин бе муҳаррик кор карда наметавонад:
public class Car {
   private Engine engine;

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

   void startMoving() {
       engine.start();
           ...
   }
Таркиб инчунин маънои онро дорад, ки вақте ки ашё аз ҷониби an objectи дигар истифода мешавад, аввал наметавонад ба ягон каси дигар тааллуқ дошта бошад. Агар ба мисоли худ баргардем, муҳаррик метавонад танҳо ба як мошин тааллуқ дошта бошад, аммо на дар як вақт ба ду ё зиёда мошин. Мо шояд имрӯз дар ин ҷо таваққуф кунем.Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 4-9
Дигар маводҳо дар силсила:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION