Rumah >Java >javaTutorial >Kesan pengubah suai akses fungsi Java dan penggantian kaedah

Kesan pengubah suai akses fungsi Java dan penggantian kaedah

王林
王林asal
2024-04-26 09:27:01896semak imbas

Pengubah suai capaian kaedah ganti dalam subkelas mestilah sama atau lebih luas: kebenaran capaian kaedah subkelas boleh lebih luas daripada kaedah kelas induk (contohnya, ditukar daripada dilindungi kepada awam). Kaedah subkelas tidak boleh mempunyai akses yang lebih terhad daripada kaedah superclass (contohnya, daripada awam kepada dilindungi).

Java 函数的访问权限修饰符之与方法重写的影响

Impak pengubahsuai akses fungsi Java dan mengatasi kaedah

Pengubah suai akses mengawal kebolehcapaian kaedah Java. Ia terdiri daripada empat jenis:

  • awam: boleh diakses di mana-mana
  • dilindungi: boleh diakses dalam pakej dan subkelas yang sama
  • lalai (tiada pengubah suai eksplisit): boleh diakses dalam pakej yang sama
  • peribadi : Hanya boleh diakses dalam kelas

Apabila mengatasi kaedah dalam kelas induk, kaedah yang diganti dalam kelas anak mesti mempunyai pengubah suai akses yang sama atau lebih luas. Ini kerana kaedah yang diganti adalah berdasarkan kaedah kelas induk, jadi ia tidak boleh lebih terhad daripada kaedah kelas induk.

Kes praktikal

Berikut ialah kelas induk:

public class Parent {
    protected void show() {
        System.out.println("Parent class show()");
    }
}

Sekarang, pertimbangkan subkelas berikut, yang mengatasi kaedah show() dalam kelas induk. Ambil perhatian bahawa pengubah suai akses kaedah show() ditukar daripada protected kepada public: show() 方法。注意 show() 方法的访问权限修饰符是从 protected 更改为 public

public class Child extends Parent {
    @Override
    public void show() {
        System.out.println("Child class show()");
    }
}

由于父类的 show() 方法是 protected 的,子类的 show() 方法也必须是 protectedpublic。将其设置为 public 符合方法重写的要求,因为它具有比父类方法更宽的访问权限。

运行这两个类将打印以下输出:

Child class show()

这是因为 Child 类中的重写方法被调用,因为它具有更宽的访问权限(publicrrreee

Disebabkan kelas induk kaedah show( ) adalah protected dan kaedah show() subkelas juga mestilah protected atau public kod> >. Menetapkannya kepada <code>awam layak sebagai penggantian kaedah kerana ia mempunyai akses yang lebih luas daripada kaedah kelas induk. 🎜🎜Menjalankan kedua-dua kelas ini akan mencetak output berikut: 🎜rrreee🎜Ini kerana kaedah yang diganti dalam kelas Child dipanggil kerana ia mempunyai akses yang lebih luas (public code> ). 🎜

Atas ialah kandungan terperinci Kesan pengubah suai akses fungsi Java dan penggantian kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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