Pengertian Access Modifier
Access Modifier (kadang juga disebut Access Specifier) adalah salah satu fitur penting dalam Object Oriented Programming (OOP) untuk melakukan Data Hiding (Menyembunyikan Data). Fitur ini memungkinkan kita untuk mengatur hak akses dari member class, digunakan agar tidak sembarangan perintah dapat mengakses, atau tidak bisa di akses secara langsung.
Fitur ini memiliki 3 tipe Access Modifier, yaitu:
- Public
- Private
- Protected
Ketiga Access Modifier mempunyai sifat mereka masing-masing . Semua baris deklarasi sebagai member class akan mengikuti sifat dari label di atasnya hingga label berikutnya atau tanda penutup class };
.
Dan sifat access default adalah private, jadi jika tidak di dirikan sebuah access modifier di atasnya maka otomatis member akan memiliki tipe sifat private.
Macam-macam Access Modifier
Dan di bawah ini adalah tipe-tipe dari label Access Modifier dengan keterangan dan contoh program.
Public
Public adalah label yang berfungsi untuk menentukan sifat akses ke semua member yang mengikutinya (di bawahnya), sehingga memiliki sifat dapat di akses dari manapun. Dapat di akses dari dalam class itu sendiri, dari anak class (derived class) dan juga dari luar class.
Contoh program:
#include <iostream> using namespace std; class siswa{ public: //Akses Specifier int id; }; int main (){ siswa budi; budi.id = 10; cout<<budi.id<<endl; return 0; }
Di atas adalah contoh program untuk membuktikan sifat dari public. Member yang mengikuti label public adalah id
.dan di main function kita membuat object budi
, untuk mencoba mengakses member variabel id
dari instance budi
. Dan membuktikan bahwa label public akan bersifat dapat diakses dari manapun, dari dalam class, anak class dan diluar class.
Private
Private adalah label yang berfungsi untuk menentukan sifat akses ke semua member yang mengikutinya menjadi memiliki sifat yang tidak dapat di akses dari manapun kecuali melalui friend function dan dari dalam class itu sendiri.
Contoh program:
#include <iostream> using namespace std; class siswa{ private: int id; }; class orangtua : public siswa{ public: int getId(){ return id; } }; int main (){ siswa budi; budi.id = 10; cout<<budi.id<<endl; return 0; }
Di atas adalah program yang sama seperti contoh program pada penjelasan public, penulis hanya menambahkan anak class (derived class), dan mengganti label public dengan private.
Note : Untuk anda yang tidak mengerti derived class (inheritance), tidak perlu bingung, penulis akan jelaskan tentang inheritance di artikel selanjutnya, dan untuk kali ini, kita hanya akan membuktikan sifat dari Access Modifier.
Dari program di atas akan menghasilkan pesan Error pada compiler, yang berbunyi.
Pesan tersebut berasal dari 3 tempat yaitu pesan pertama dari perintah yang berada di dalam derived class, kedua dan ketiga berasal dari perintah pemanggilan member id
yang berada pada main function.
Pesan itu membuktikan bahwa member id
mengikuti sifat label private. Yang tidak dapat diakses dari luar class dan tidak bisa diakses dari derived class. Private memiliki sifat hanya dapat di akses dari dalam class itu sendiri.
Tapi masih ada cara untuk mengakses member id
tersebut dari luar class, dengan cara membuat perantara di dalam class tersebut, yaitu dengan function yang bersifat public, cara ini disebut setter dan getter.
Contoh program
#include <iostream> using namespace std; class siswa{ private: int id; public: int getId(){ return id; } void setId(int i){ id = i; } }; int main (){ siswa budi; budi.setId(10); cout<<budi.getId()<<endl; return 0; }
bukan hanya dengan cara itu saja, kita juga bisa menggunakan friend function untuk dapat mengakses member class yang bersifat private, yang akan penulis jelaskan pada artikel berikutnya.
Protected
Protected adalah label yang berfungsi untuk menentukan sifat akses semua member yang mengikutinya, sehingga memiliki sifat yang tidak dapat diakses dari luar class tapi masih dapat di akses dari dalam class maupun anak class (derived class).
Contoh program
#include <iostream> using namespace std; class siswa{ protected: int id; }; class orangtua : public siswa{ public: int getId(){ return id; } }; int main (){ siswa budi; budi.id = 10; cout<<budi.id<<endl; return 0; }
Di atas adalah contoh program yang masih sama seperti contoh program pada contoh sebelumnya dari penjelasan private. Penulis hanya mengubah label access specifier dari private menjadi protected.
Dari program di atas akan menghasilkan pesan Error pada compiler, yang berbunyi.
Pesan tersebut hanya berasal dari perintah pemanggilan member id
yang berada pada main function, membuktikan sifat akses dari protected. Member id
tidak bisa diakses dari luar class tapi masih bisa diakses dari derived class.
Sama seperti sebelumnya, untuk dapat mengakses member yang bersifat protected dari luar class kita juga bisa menggunakan cara setter getter atau friend function.
Di bawah ini adalah ringkasan berbentuk tabel dari penjelasan macam-macam Access Modifier:
Access Modifier | Dalam Class | Anak Class (subclass) | Luar Class (world) |
---|---|---|---|
Public | Ya | Ya | Ya |
Protected | Ya | Ya | Tidak |
Private | Ya | Tidak | Tidak |
Perbedaan visibiliti modifier dan visibiliti public