Modul 6 [Access Modifier Visibility] - lab-kcks/Modul-STRUKDAT GitHub Wiki

Konsep "Access Modifier" atau "Visibility" adalah bagian penting dari pemrograman berorientasi objek karena membantu mengatur akses terhadap properti dan metode dari suatu kelas. Berikut adalah penjelasan lebih lanjut tentang keyword yang sering digunakan:

Public

  • Ketika sebuah property atau method dinyatakan sebagai public, maka seluruh kode program di luar class bisa mengaksesnya, termasuk class turunan.

Analogi public

img

Private

  • Ketika sebuah property atau method dinyatakan sebagai private, maka property atau method tersebut tidak bisa diakses dari luar class, termasuk juga dari class turunan. Satu-satunya yang bisa mengakses adalah kode program yang ada di dalam class itu sendiri.

Analogi Private

img

Protected

  • Ketika sebuah property atau method dinyatakan sebagai protected, maka property atau method tersebut tidak bisa diakses dari luar class, namun masih bisa diakses oleh class itu sendiri atau turunan class tersebut.
  • Protected mirip seperti private, yakni tidak bisa diakses di luar class. Perbedaannya hanya ketika class itu di turunkan, dimana property atau method yang di-set sebagai protected masih bisa diakses oleh class turunan.

Analogi Protected

img

Definisi Kelas MyClass

class MyClass {
    private:
        int privateVar;

    public:
        int publicVar;

    protected:
        int protectedVar;

    public:
        // Constructor
        MyClass() {
            privateVar = 0;
            publicVar = 0;
            protectedVar = 0;
        }

        // Method untuk mengakses privateVar
        int getPrivateVar() {
            return privateVar;
        }

        // Method untuk mengatur privateVar
        void setPrivateVar(int val) {
            privateVar = val;
        }
};

Fungsi Utama (main)

int main() {
    MyClass obj;
    
    // Mengakses dan mengubah nilai properti publik
    obj.publicVar = 10;
    cout << "Public Var: " << obj.publicVar << endl;

    // Tidak dapat mengakses properti private atau protected
    // obj.privateVar = 20;  // Error: Tidak dapat mengakses properti private dari luar kelas
    // obj.protectedVar = 30;  // Error: Tidak dapat mengakses properti protected dari luar kelas

    // Mengakses properti private melalui method
    obj.setPrivateVar(20);
    cout << "Private Var: " << obj.getPrivateVar() << endl;

    return 0;
}