JavaRush /จาวาบล็อก /Random-TH /ระดับ 23 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ
zor07
ระดับ
Санкт-Петербург

ระดับ 23 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ

เผยแพร่ในกลุ่ม
ระดับ 23 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ - 1
  1. คลาสภายในมีอะไรบ้าง?

    • คลาสที่ซ้อนกันแบ่งออกเป็นสองประเภท: แบบคงที่และแบบไม่คงที่
    • คลาสที่ซ้อนกันที่ประกาศเป็นสแตติกเรียกว่าคลาสที่ซ้อนกันแบบสแตติก
    • คลาสที่ไม่คงที่แบบซ้อนกันเรียกว่าคลาสภายใน
  2. คลาสภายในที่ไม่เปิดเผยตัวตนคอมไพล์เพื่ออะไร?

    ไปยังคลาสที่ไม่คงที่ภายใน

  3. เหตุใดจึงต้องใช้คำหลักfinalเมื่อสร้างคลาสที่ไม่ระบุชื่อ

    หากมีการกำหนดคลาสภายในที่ไม่ระบุชื่อและจำเป็นต้องใช้อ็อบเจ็กต์ที่กำหนดไว้ภายนอกคลาสภายในนี้ คอมไพลเลอร์ต้องการให้การอ้างอิงที่ส่งถึงคลาสนั้นถูกประกาศว่าไม่เปลี่ยนรูป (ขั้นสุดท้าย) หากไม่มีการประกาศดังกล่าว คุณจะได้รับข้อผิดพลาดเมื่อคอมไพล์โปรแกรม

  4. จะสร้างวัตถุคลาสภายในอย่างถูกต้องได้อย่างไร?

    คลาสภายใน (ไม่คงที่) เช่นเดียวกับตัวแปรและวิธีการ เชื่อมโยงกับอ็อบเจ็กต์ของคลาสภายนอก คลาสภายในยังสามารถเข้าถึงฟิลด์ของคลาสภายนอกได้โดยตรง คลาสดังกล่าวไม่สามารถมีวิธีการและฟิลด์แบบคงที่ได้ คลาสภายในไม่สามารถดำรงอยู่ได้หากไม่มีอินสแตนซ์ของคลาสภายนอก หากต้องการสร้างวัตถุ:

    Outer outer = new Outer();
    Innter inner = outer.new Inner();
  5. จะสร้างวัตถุของคลาสที่ซ้อนกันได้อย่างไร?

    ไวยากรณ์สำหรับการสร้างวัตถุคลาสที่ซ้อนกันคือ:

    OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
  6. เป็นไปได้ไหมที่จะสร้างวิธีการ/ตัวแปรแบบคงที่ในคลาสภายใน?

    ไม่สามารถประกาศวิธีการ/ตัวแปรแบบคงที่ในคลาสภายในได้ (ไม่ใช่คลาสที่ซ้อนกัน)

    คลาสภายใน (ไม่คงที่) เช่นเดียวกับตัวแปรและวิธีการ เชื่อมโยงกับอ็อบเจ็กต์ของคลาสภายนอก คลาสดังกล่าวไม่สามารถมีวิธีการและฟิลด์แบบคงที่ได้

  7. ตั้งชื่อคลาสภายในสามคลาสใด ๆ บ้างไหม?

    1. private static class Holder— คลาสที่ซ้อนกันHashMapจากjava.util.
    2. อินเทอร์เฟซMapมีinterface Entry<K,V>ซึ่งกลับมาอีกครั้งHashMapและถูกนำไปใช้ในคลาสที่ซ้อนกันstatic class Entry<K,V> implements Map.Entry<K,V>อื่น
    3. private static class IntegerCacheในชั้นเรียนInteger.
  8. คลาสภายในแก้ปัญหาการสืบทอดหลายรายการใน Java ได้อย่างไร

    เพราะ Java ห้ามการสืบทอดหลายคลาส ปัญหานี้ได้รับการแก้ไขด้วยความช่วยเหลือของคลาสภายใน: ในคลาสที่เราต้องการ เราประกาศคลาสภายในและสืบทอดจากคลาสที่ต้องการ ตัวอย่าง:

    class Tiger extends Cat
    {
    
     public void tigerRun()
     {
      .....
     }
    
    public void startTiger()
     {
      TigerThread thread = new TigerThread();
      thread.start();
     }
    
     class TigerThread extends Thread
     {
      public void run()
      {
       tigerRun();
      }
     }
    }
  9. อะไรคือความแตกต่างระหว่างคลาสที่ไม่ระบุชื่อตามอินเทอร์เฟซและตามคลาส?

    คลาสที่ไม่ระบุชื่อตาม JLS 15.9.5 เป็นนิพจน์ที่รวมการประกาศคลาสใหม่และการเริ่มต้นเข้าด้วยกัน:

    • เมื่อประกาศคลาส คลาสใหม่จะถูกสร้างขึ้นซึ่งได้มาจากคลาสที่ระบุเมื่อใช้เป็นฐานของคลาสอื่น หรือใช้อินเทอร์เฟซเมื่อใช้เป็นฐานของอินเทอร์เฟซ
    • ในระหว่างการเริ่มต้น ออบเจ็กต์ใหม่จะถูกสร้างขึ้นและการอ้างอิงจะถูกส่งกลับ: คลาสที่ไม่ระบุตัวตนเป็นรูปธรรม

    ดังนั้นความแตกต่างเพียงอย่างเดียวในคลาสที่ไม่ระบุชื่อตามอินเทอร์เฟซและคลาสคือจำนวนวิธีนามธรรมที่จำเป็นต้องนำไปใช้

    Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.

  10. Можно ли создать анонимный статический вложенный класс?

    Нет, статической становится только переменная, но не класс.

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION