Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Penentu Akses (peribadi, dilindungi, awam) Mempengaruhi Kebolehcapaian Ahli dalam Warisan?

Bagaimanakah Penentu Akses (peribadi, dilindungi, awam) Mempengaruhi Kebolehcapaian Ahli dalam Warisan?

Mary-Kate Olsen
Lepaskan: 2024-12-16 18:11:11
asal
120 orang telah melayarinya

How Do Access Specifiers (private, protected, public) Affect Member Accessibility in Inheritance?

Memahami Penentu Akses dalam Warisan

Warisan membenarkan kelas untuk mewarisi ahli dan kefungsian daripada kelas induk, tetapi kebolehaksesan ahli yang diwarisi ini bergantung pada penentu akses yang digunakan. Penentu akses peribadi, dilindungi dan awam mengawal cara ahli diakses dalam kelas yang diwarisi.

Warisan Persendirian

  • Ahli persendirian kelas asas kekal peribadi dalam kelas terbitan.
  • Ahli kelas asas yang dilindungi dan awam menjadi peribadi dalam terbitan kelas.
  • Kelas terbitan kehilangan keupayaan untuk mengakses ahli persendirian kelas asas.

Contoh:

class Base {
private:
    int private_member;
};

class Derived : private Base {
public:
    void accessPrivate() {
        // Error: Cannot access 'private_member' because it's private in 'Base'
    }
};
Salin selepas log masuk

Warisan Dilindungi

  • Ahli awam kelas asas menjadi dilindungi dalam kelas terbitan.
  • Ahli kelas asas yang dilindungi kekal dilindungi dalam kelas terbitan.
  • Kelas terbitan boleh mengakses ahli kelas asas yang dilindungi secara langsung dan melalui penunjuk ke kelas asas objek.

Contoh:

class Base {
protected:
    int protected_member;
};

class Derived : protected Base {
public:
    void accessProtected() {
        protected_member = 100; // Allowed
    }
};
Salin selepas log masuk

Warisan Awam

  • Ahli awam dan dilindungi kelas asas menjadi awam dalam kelas terbitan.
  • Ahli persendirian kelas asas kekal peribadi dalam kelas terbitan.
  • Kelas terbitan boleh mengakses semua ahli awam kelas asas, secara langsung atau melalui petunjuk.

Contoh:

class Base {
public:
    int public_member;
};

class Derived : public Base {
public:
    void accessPublic() {
        public_member = 200; // Allowed
    }
};
Salin selepas log masuk

Pertimbangan:

  • Penentukan akses dikenakan setiap kelas , bukan setiap objek.
  • Kelas terbitan hanya boleh mengakses ahli pangkalan mereka sendiri objek kelas.
  • Rakan boleh mengakses semua ahli kelas tanpa mengira penentu akses.

Atas ialah kandungan terperinci Bagaimanakah Penentu Akses (peribadi, dilindungi, awam) Mempengaruhi Kebolehcapaian Ahli dalam Warisan?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan