Java Academy · Pelajaran

Klausa permits

Senaraikan subjenis yang dibenarkan

Pelajaran 2 daripada 413 langkah

Klausa permits ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Klausa untuk Subjenis yang Dibenarkan

Klausa permits ialah cara jenis tertutup menamakan subjenis yang dibenarkan. Klausa ini hadir sejurus selepas nama jenis dan kata kunci permits.

Sintaks Asas

Senaraikan subjenis yang dibenarkan, dipisahkan dengan koma, selepas permits.

public class Main {
    sealed interface Vehicle permits Car, Truck, Motorcycle {}
    record Car() implements Vehicle {}
    record Truck() implements Vehicle {}
    record Motorcycle() implements Vehicle {}

    public static void main(String[] args) {
        Vehicle v = new Truck();
        System.out.println(v.getClass().getSimpleName());
    }
}

Melaksanakan Kontrak

Setiap subjenis yang dinamakan mesti benar-benar implements (untuk antara muka) atau extends (untuk kelas) jenis tertutup tersebut. Menamakan kelas dalam permits yang tidak berbuat demikian akan menghasilkan ralat kompilasi.

Meninggalkan Klausa Subjenis Dibenarkan

Jika semua subjenis yang dibenarkan diisytiharkan dalam fail yang sama dengan jenis tertutup, anda boleh meninggalkan permits sepenuhnya. Pengkompil akan membuat kesimpulan tentang senarai tersebut secara automatik.

public class Main {
    sealed interface Status {}
    record Active() implements Status {}
    record Inactive() implements Status {}

    public static void main(String[] args) {
        Status s = new Active();
        System.out.println(s.getClass().getSimpleName());
    }
}

Apabila Klausa Subjenis Dibenarkan Diperlukan

Jika subjenis berada dalam fail berasingan dalam pakej atau modul yang sama, anda mesti menyenaraikannya secara jelas dalam permits. Pengkompil tidak dapat membuat kesimpulan merentas fail.

Susunan Tidak Penting

Susunan nama dalam permits tidak mempunyai makna semantik. Susunan itu tidak menjejaskan cara penyataan pilihan berfungsi atau apa-apa yang lain; ia semata-mata senarai jenis yang dibenarkan.

Hierarki Kelas dengan Subjenis Dibenarkan

Klausa yang sama berfungsi untuk kelas tertutup dengan tingkah laku abstrak.

public class Main {
    sealed static abstract class Node permits Leaf, Branch {
        abstract int size();
    }
    static final class Leaf extends Node {
        int size() { return 1; }
    }
    static final class Branch extends Node {
        final Node a, b;
        Branch(Node a, Node b) { this.a = a; this.b = b; }
        int size() { return a.size() + b.size(); }
    }

    public static void main(String[] args) {
        Node tree = new Branch(new Leaf(), new Branch(new Leaf(), new Leaf()));
        System.out.println("Leaves: " + tree.size());
    }
}

Terlupa Menyenaraikan Subjenis

Jika sesebuah kelas melaksanakan antara muka tertutup tetapi tiada dalam permits, kompilasi akan gagal dengan mesej yang menyatakan bahawa kelas itu tidak dibenarkan melanjutkan jenis tertutup tersebut.

Jenis yang Dibenarkan Diketahui Umum

Senarai permits ialah sebahagian daripada kontrak jenis dan direkodkan dalam fail kelas. Alat serta pengkompil boleh membacanya untuk mengetahui set subjenis yang lengkap.

Mencampurkan Subjenis Muktamad dan Tertutup

Senarai permits boleh mencampurkan pengubah: sesetengah subjenis ialah final, manakala yang lain ialah sealed untuk meneruskan hierarki dengan lebih mendalam.

public class Main {
    sealed interface Shape permits Circle, Polygon {}
    record Circle(double r) implements Shape {}
    sealed interface Polygon extends Shape permits Triangle, Rectangle {}
    record Triangle() implements Polygon {}
    record Rectangle() implements Polygon {}

    public static void main(String[] args) {
        Shape s = new Triangle();
        System.out.println(s instanceof Polygon);
    }
}

Amalan Terbaik

Kekalkan jenis tertutup dan subjenisnya berdekatan untuk memudahkan pembacaan. Utamakan meninggalkan permits bagi hierarki kecil dalam satu fail, dan senaraikannya secara jelas apabila fail dipecahkan.

Semakan Pantas

Uji pemahaman anda tentang klausa subjenis yang dibenarkan.

Imbas Kembali

Anda telah mempelajari klausa permits.

  • Klausa ini menyenaraikan subjenis yang dibenarkan selepas nama jenis tertutup.
  • Setiap jenis yang disenaraikan mesti melanjutkan atau melaksanakan jenis tertutup tersebut.
  • Klausa ini boleh ditinggalkan apabila semua subjenis berkongsi fail yang sama.
  • Subjenis juga boleh menjadi tertutup untuk memanjangkan hierarki.
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Klausa permits” percuma?

Ya — teks penuh “Klausa permits” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Klausa permits”?

Senaraikan subjenis yang dibenarkan Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Klausa permits” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengisytiharkan Jenis Sealed
  2. Klausa permits
  3. Sealed dengan Records
  4. switch Menyeluruh pada Sealed
← Kembali ke Java Academy