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
Mary-Kate Olsenasal
2024-12-16 18:11:11133semak imbas

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'
    }
};

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
    }
};

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
    }
};

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!

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