คลาส anonymous ใน Java สามารถมีเมธอดอื่นที่ไม่ใช่ superclass ได้หรือไม่? [ซ้ำ]
Dec 27 2020
ฉันรู้ว่าคลาสที่ไม่ระบุตัวตนนั้นดีสำหรับการลบล้างและอื่น ๆ แต่ฉันสงสัยว่าคุณสามารถเพิ่มเมธอดอื่น ๆ ที่ไม่มีในคลาสพาเรนต์ได้หรือไม่เช่นในตัวอย่างด้านล่างนี้
นี่คือคลาสของฉันกับ wieBenIk เป็นวิธีเดียว
public class Driehoek {
//methoden
public void wieBenIk(){
System.out.println("ik ben een driehoek");
}
}
และนี่คือคลาสนิรนามของฉันที่ฉันได้เพิ่ม newMethod
ชั้นสาธารณะ Main {
public static void main(String[] args) {
Driehoek test = new Driehoek(){
@Override
public void wieBenIk() {
System.out.println("overrided by anonymous class");
}
public void newMethod(){
System.out.println("I am a new method");
}
};
test.newMethod();
}
}
คำถามของฉันคือเหตุใด test.newMethod () จึงไม่ทำงาน ไม่ใช่ชั้นเด็กเหมือนอีกเหรอ? ขอบคุณทุกคนที่ช่วยฉัน
คำตอบ
SJuan76 Dec 27 2020 at 05:44
การทดสอบจะประกาศเป็นตัวอย่างของDriehoek เป็นเช่นนี้สำหรับคอมไพเลอร์ก็จะมีสมาชิกของDriehoek
ในทำนองเดียวกันถ้าคุณกำหนด
Object test = new Driehoek() {....};
สำหรับการทดสอบคอมไพเลอร์จะมีให้เฉพาะสมาชิกObjectเท่านั้น
หากคุณเพิ่มสมาชิกเพิ่มเติมในคลาสที่ไม่ระบุชื่อคอมไพลเลอร์จะไม่ทราบว่าการทดสอบมีวิธีการเหล่านั้นพร้อมใช้งาน ดังนั้นจึงไม่อนุญาตให้คุณใช้