Bisakah kelas anonim di Java memiliki metode lain selain superclass-nya? [duplikat]

Dec 27 2020

Saya tahu bahwa kelas anonim bagus untuk diganti dan seterusnya, tetapi saya ingin tahu apakah Anda juga dapat menambahkan metode lain yang tidak ada di kelas induk seperti pada contoh di bawah ini.

Ini adalah kelas saya dengan wieBenIk sebagai satu-satunya metode.

public class Driehoek {

//methoden
public void wieBenIk(){
    System.out.println("ik ben een driehoek");
}

}

dan di sini adalah kelas anonim saya tempat saya menambahkan metode baru.

kelas umum Utama {

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();

}

}

Pertanyaan saya adalah mengapa test.newMethod () tidak berfungsi? Bukankah ini kelas anak-anak seperti yang lain? Terima kasih semuanya telah membantu saya.

Jawaban

SJuan76 Dec 27 2020 at 05:44

test dideklarasikan sebagai turunan dari Driehoek . Dengan demikian, untuk kompilernya akan memiliki anggota Driehoek .

Begitu pula jika Anda mendefinisikan

Object test = new Driehoek() {....};

untuk pengujian compiler hanya akan tersedia anggota Object .

Jika Anda menambahkan lebih banyak anggota ke kelas anonim, kompilator tidak akan tahu bahwa tes memiliki metode tersebut. Jadi itu tidak memungkinkan Anda untuk menggunakannya