Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Penentu Akses Mempengaruhi Kebolehcapaian Ahli dalam Warisan C?

Bagaimanakah Penentu Akses Mempengaruhi Kebolehcapaian Ahli dalam Warisan C?

Barbara Streisand
Barbara Streisandasal
2024-12-26 03:27:08440semak imbas

How Do Access Specifiers Affect Member Accessibility in C   Inheritance?

Memahami Penentu Akses dalam Warisan

Dalam pengaturcaraan berorientasikan objek, penentu akses ialah kata kunci yang mengawal kebolehcapaian ahli kelas. Apabila mewarisi daripada kelas asas, kebolehcapaian ahlinya dalam kelas terbitan bergantung pada penentu akses yang digunakan semasa warisan.

Jenis Warisan

C menyokong tiga jenis warisan:

  • Awam warisan: Ahli awam kelas asas menjadi ahli awam kelas terbitan. Ahli yang dilindungi menjadi dilindungi dalam kelas terbitan.
  • Warisan dilindungi: Ahli awam kelas asas menjadi ahli dilindungi kelas terbitan. Ahli yang dilindungi menjadi dilindungi dalam kelas terbitan.
  • Warisan persendirian: Ahli awam dan dilindungi kelas asas menjadi ahli persendirian kelas terbitan.

Peraturan Akses Ahli

Begini cara tahap akses ahli berubah semasa warisan berdasarkan penentu akses yang digunakan:

Warisan Awam dan Dilindungi:

  • Ahli awam kelas asas kekal awam atau dilindungi dalam kelas terbitan.
  • Ahli kelas asas yang dilindungi kekal dilindungi dalam terbitan kelas.

Warisan Persendirian:

  • Ahli awam dan dilindungi kelas asas kehilangan penentu akses mereka dan menjadi peribadi dalam terbitan kelas.

Contoh:

class Base {
public:
    int public_member;
protected:
    int protected_member;
    int private_member; // private members are not inherited
};

class Derived1 : public Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived2 : protected Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived3 : private Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // not accessible
        protected_member = 20; // not accessible
        // private_member = 30; // not accessible
    }
};

Amalan Terbaik untuk Warisan

Apabila memilih penentu akses untuk warisan, pertimbangkan perkara berikut garis panduan:

  • Lalai kepada persendirian melainkan diperlukan sebaliknya: Persendirian melindungi pelaksanaan dalaman kelas.
  • Gunakan dilindungi untuk mendedahkan fungsi kepada kelas terbitan .
  • Gunakan awam dengan berhati-hati sebagai ia membenarkan akses kepada ahli dari luar hierarki kelas.
  • Elakkan pewarisan awam ahli persendirian atau dilindungi: Ini memecahkan enkapsulasi dan boleh membawa kepada tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Bagaimanakah Penentu Akses Mempengaruhi Kebolehcapaian Ahli dalam Warisan C?. 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