Rumah > Java > javaTutorial > Kelas tanpa nama di Jawa

Kelas tanpa nama di Jawa

DDD
Lepaskan: 2025-01-20 22:33:15
asal
525 orang telah melayarinya

Clases anónimas en Java

kelas tanpa nama di Java ialah kelas yang tidak dinamakan, sesuai untuk mentakrif dan membuat instantiating pelaksanaan kelas atau antara muka di tempat, tanpa memerlukan fail tambahan. Sifat sekali guna menghalang penggunaan semula. Tidak seperti kelas tempatan (pengisytiharan), kelas tanpa nama ialah ungkapan yang menjana satu objek, boleh diserahkan kepada pembolehubah.

Ia amat berguna apabila kelas digunakan sekali sahaja, seperti apabila mentakrifkan kaedah tertentu antara muka atau kelas abstrak. Aplikasinya kerap dalam Java Swing dengan fungsi event listeners atau lambda (fungsi anak panah).

Sebagai fakta yang ingin tahu, pengkompil Java memberikan mereka nama automatik (cth. ClaseContenedora.class), dibentuk dengan nama kelas yang mengandungi dan nombor yang menunjukkan kedudukannya.

Sintaks:

Sebagai ungkapan, sintaksnya menyerupai seruan pembina, tetapi sebaliknya, ia mengandungi blok kod yang mentakrifkan struktur kelas:

<code class="language-java">ClaseOInterfaz nombreVariable = new ClaseOInterfaz() {
    // Cuerpo de la clase anónima
};</code>
Salin selepas log masuk

Komponen utama ialah:

  • Pengendali new.
  • Nama kelas untuk dilanjutkan atau antara muka untuk dilaksanakan.
  • Kurungan dengan hujah pembina (jika anda mempunyainya), sama seperti semasa membuat instantiat kelas biasa. Dalam antara muka, kurungan kosong.
  • Kunci yang mengunci badan kelas.
  • Ia diisytiharkan dan dijadikan instantiated dalam satu baris, disimpan dalam pembolehubah.

Jenis Kelas Tanpa Nama:

  • Pelanjutan kelas.
  • Pelanjutan kelas abstrak.
  • Pelaksanaan antara muka.
  • Hujah kaedah.

Contoh:

1. Sambungan kelas:

<code class="language-java">public class Carro {
    public void tipoMotor() {
        System.out.println("Motor de combustión interna");
    }
}

public class Main {
    public static void main(String[] args) {
        Carro carroCombustion = new Carro();
        Carro carroElectrico = new Carro() {
            @Override
            public void tipoMotor() {
                System.out.println("Motor eléctrico");
            }
        };
        carroCombustion.tipoMotor(); // Motor de combustión interna
        carroElectrico.tipoMotor(); // Motor eléctrico
    }
}</code>
Salin selepas log masuk

2. Sambungan kelas abstrak:

<code class="language-java">public abstract class ConexionBD {
    public abstract void obtenerConexion();
}

public class Main {
    public static void main(String[] args) {
        ConexionBD conexionMySQL = new ConexionBD() {
            @Override
            public void obtenerConexion() {
                System.out.println("Conexión a MySQL");
            }
        };
        ConexionBD conexionPostgreSQL = new ConexionBD() {
            @Override
            public void obtenerConexion() {
                System.out.println("Conexión a PostgreSQL");
            }
        };
        conexionMySQL.obtenerConexion(); // Conexión a MySQL
        conexionPostgreSQL.obtenerConexion(); // Conexión a PostgreSQL
    }
}</code>
Salin selepas log masuk

3. Pelaksanaan antara muka:

<code class="language-java">import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(5, 10, 56, 3, 2, 1, 0);
        numeros.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println(numeros); // [56, 10, 5, 3, 2, 1, 0]
    }
}</code>
Salin selepas log masuk

4. Hujah kaedah:

<code class="language-java">public class Main {
    public static void main(String[] args) {
        Thread hilo = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("Hola, soy un hilo");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        hilo.start();
    }
}</code>
Salin selepas log masuk

Kelebihan:

  • Penciptaan objek hanya apabila ia diperlukan.
  • Mengubah suai gelagat kelas atau antara muka tanpa subkelas.
  • Kod yang lebih ringkas dan boleh dibaca.
  • Penjimatan masa dengan mengelakkan fail tambahan.

Skop:

Serupa dengan kelas biasa, dengan akses kepada pembolehubah tempatan skop kontena, dengan sekatan tidak boleh mengisytiharkan pemula atau antara muka statik, dan pengehadan akses kepada pembolehubah tempatan bukan muktamad atau muktamad secara berkesan.

Kesimpulan:

Kelas tanpa nama ialah alat yang berkuasa dan serba boleh di Java, berguna untuk pelaksanaan yang unik dan ringkas. Penggunaannya, walaupun kadangkala tersirat, memudahkan kod dan meningkatkan kecekapan. Untuk mendapatkan maklumat lanjut, lihat dokumentasi Java rasmi.

Atas ialah kandungan terperinci Kelas tanpa nama di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan