OOP - Visibility Property and Method

OOP PHP - Visibility property dan method

OOP PHP - Memiliki tiga visibility level untuk property dan method dari sebuah class, yaitu public, protected dan private.

Visibility digunakan untuk menentukan tingkat visibilitas dari suatu property atau method. Tiga tingkat tersebut menentukan apakah properti atau metode dapat diakses diluar class, atau didalam class beserta class turunannya saja.

Berikut adalah penjelasan serta contoh untuk masing - masing tingkat visibilitas:

Public Visibility

Tingkat pertama adalah public. Tingkat ini tidak memiliki batasan, yang berarti dapat diakses dalam lingkup apapun. Ini berarti bahwa properti public dari suatu objek dapat diambil dan dimodifikasi dari mana saja dalam sebuah program — misalnya didalam class, subclass, atau dari luar class.

Secara teknis, deklarasi sebuah metode public tidak mesti menyertakan kata kunci visibilitas (visibility keyword), semisalkan public function tambah(), kita cukup menulisakan function tambah() saja untuk membuatnya public.

Selain itu, properti dapat didefinisikan menggunakan kata kunci var untuk menjadikannya public. Tapi untuk alasan kompatibilitas dimasa depan, kita harus selalu menggunakan kata kunci visibilitas (public) dan tidak menggunakan kata kunci var.
class User {
// property dapat diakses dari manapun
public $nama;
}

Protected Visibility

Tingkat kedua adalah protected. Properti dan method yang levelnya protected hanya dapat diakses dari dalam kelas itu sendiri beserta class turunannya.

Property dan method yang levelnya protected tidak dapat diakses dari luar class atau subclass.
class User {
// property dapat diakses didalam class serta class turunannya
protected $alamat;
}

Private Visibility

Tingkat ketiga adalah private, Properti atau method private tidak dapat diakses dengan subclass dari class yang didefinisikannya.

Jika kita memiliki class dengan properti protected dan properti private yang kemudian menurunkannya pada subclass, kita hanya dapat mengakses properti yang protected saja, tetapi tidak dengan properti private.
class User {
// property hanya dapat diakses didalam class itu sendiri
private $telp;
}

Contoh:

<?php
class Rini
{
 public $nama = 'Rini';
 protected $alamat = 'Bogor';
 private $telp = '123321';

 function setRiniData()
 {
  // akan menampilkan value dari setiap variabel
  return 'Hai, saya '.$this->nama.' dari '.$this->alamat.', bisa hubungi saya dinomor '.$this->telp;
 }
}

class User extends Rini
{
 function setUserData()
 {
  // value dari variabel $telp tidak tampil karena variabel $telp diset private
  // hanya bisa diakses didalam class dimana variabel $telp dideklarasikan
  return 'Hai, saya '.>this->nama.' dari '.$this->alamat.', bisa hubungi saya dinomor '.$this->telp;
 }
}

// instansiasi class Rini
$ani = new Rini();
echo $ani->setRiniData();

// instansiasi class User
$user = new User();
echo $user->setUserData(); // akan terjadi error

Referensi:

Posting Komentar

0 Komentar