Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

มีการกำหนดคลาสภายในที่ไม่ระบุชื่อกี่ประเภทใน Java?


ชนชั้นในนิรนาม เป็นคลาสชั้นในที่ประกาศ ไม่มีชื่อคลาส เลย กล่าวอีกนัยหนึ่ง ชั้นในนิรนามเรียกว่า ชั้นในนิรนาม . เนื่องจากไม่มีชื่อจึงไม่มี คอนสตรัคเตอร์ เพราะเรารู้ว่าชื่อคอนสตรัคเตอร์เหมือนกับชื่อคลาส

เราสามารถกำหนด ชั้นในนิรนาม และสร้างวัตถุโดยใช้ ใหม่ โอเปอเรเตอร์ในเวลาเดียวกันในขั้นตอนเดียว

ไวยากรณ์

ใหม่(รายการอาร์กิวเมนต์){ // คลาสเนื้อหาที่ไม่ระบุชื่อ}

ประเภทของคลาสภายในที่ไม่ระบุชื่อใน Java

  • คลาสภายในที่ไม่ระบุตัวตนที่ขยายคลาส
  • คลาสภายในที่ไม่ระบุชื่อที่ใช้อินเทอร์เฟซ
  • ชั้นในนิรนามเป็นการโต้แย้ง

คลาสภายในที่ไม่ระบุชื่อที่ขยายคลาส

ที่นี่ ใหม่ คำหลักถูกใช้เพื่อสร้างวัตถุของ ชั้นในที่ไม่ระบุชื่อ ที่มีอ้างอิงประเภทระดับผู้ปกครอง

ตัวอย่าง

รถคลาส { public void engineType() { System.out.println("Turbo Engine"); }} คลาสสาธารณะ AnonymousClassDemo { โมฆะคงที่สาธารณะ main (สตริง args []) { รถ c1 =รถใหม่ (); c1.engineType(); รถ c2 =รถใหม่ () { @แทนที่โมฆะสาธารณะ engineType () { System.out.println ("V2 Engine"); } }; c2.engineType(); }}

ผลลัพธ์

เครื่องยนต์ Turbo EngineV2


คลาสภายในที่ไม่ระบุชื่อที่ใช้อินเทอร์เฟซ

ที่นี่ ใหม่ คำหลักถูกใช้เพื่อสร้างวัตถุของ ชั้นในที่ไม่ระบุชื่อ ที่มีอ้างอิงประเภทอินเทอร์เฟซ

ตัวอย่าง

<ก่อนหน้า>ซอฟต์แวร์อินเทอร์เฟซ { โมฆะสาธารณะพัฒนา ();} คลาสสาธารณะ AnonymousClassDemo1 { โมฆะสาธารณะสาธารณะหลัก (สตริง args []) { ซอฟต์แวร์ s =ซอฟต์แวร์ใหม่ () { @แทนที่โมฆะสาธารณะพัฒนา () { System.out.println ( "ซอฟต์แวร์ที่พัฒนาใน Java"); } }; s.พัฒนา(); System.out.println(s.getClass().getName()); }}

ผลลัพธ์

ซอฟต์แวร์ที่พัฒนาใน JavaAnonymousClassDemo1$1


ชั้นในนิรนามเป็นอาร์กิวเมนต์

เราสามารถใช้ ชั้นในนิรนาม เป็นอาร์กิวเมนต์เพื่อให้สามารถส่งผ่านไปยังเมธอดหรือตัวสร้าง

ตัวอย่าง

คลาสนามธรรม Engine { โมฆะนามธรรมสาธารณะ engineType ();} คลาสรถ { ขนส่งโมฆะสาธารณะ (เครื่องยนต์ e) { e.engineType (); }} คลาสสาธารณะ AnonymousInnerClassDemo2 { โมฆะคงสาธารณะหลัก (สตริง args []) { ยานพาหนะ v =ยานเกราะใหม่ (); v.transport (เครื่องยนต์ใหม่ () { @แทนที่โมฆะสาธารณะ engineType () { System.out.println ("เครื่องยนต์เทอร์โบ"); } }); }}

ผลลัพธ์

เครื่องยนต์เทอร์โบ