Tugas Alpro2 – Minggu 5 – 4121053 – Erlangga JayaWardhana

M O D I F I E R

Pembahasan 

    Salah satu hubungan class yang pernah kita pelajari adalah inheritance (pewarisan). Semua yang ada di dalam class (atribut dan method) disebut member. Biasanya akan ada tingkatan akses yang disebut modifier. 
    Pada hubungan inheritance, semua member di dalam class induk akan bisa diakses oleh class anak (subclass), kecuali memeber tersebut diberikan modifier private. 
    Perlu diingat: Modifier tidak hanya bisa diberikan kepada member saja. Tapi juga bisa diberikan kepada interface, enum, dan class itu sendiri.

Ada 3 Macam Modifier dalam Java

Secara umum ada 3 macam modifier yang digunakan dalam Java: public, private, dan protected. Berikut ini tabel jangkauan untuk masing-masing modifier: 


Keterangan:

  1. Y artinya bisa diakses;
  2. N artinya tidak bisa diakses;
  3. Subclass artinya class anak;
  4. World artinya seluruh package di aplikasi.


# Public

Modifier public akan membuat member dan class bisa di akses dari mana saja. 
Contoh: 

package modifier;

class Person {
    public String name;

    public changeName(String newName){
        this.name = newName;
    }
}
Pada class Preson terdapat dua member, yaitu:
  • atribut name
  • method changeName()
Kedua member tersebut kita berikan modifier public. Artinya mereka akan bisa diakses dari mana saja.

Pada class diagram, modifier public digambarkan dengan simbol plus (+).
Contoh:


Semua member dalam class Player memiliki modifier public. Perhatikan simbol + yang ada di depannya.

# Private

    Modifier private akan membuat member hanya bisa diakses oleh dari dalam class itu sendiri.
    Perlu diingat : Modifier private tidak bisa diberikan kepada class, enum, dan interface. Modifier private hanya bisa diberikan kepada member class.
    Saya akan mencontohkan dari package Bangun Datar yang Blog saya sebelumnya

Untuk melihat lebih lanjut source code Bangun Datar bisa klik link di bawah ini :


Penjelasan :
  1. Jika Class Persegi di bagian float sisi diberi Private maka akan terjadi Error di class pemanggilan (class Proses)
  2. Maka di dalam class Proses harus di hapus di bagian atribut sisi biar bisa dijalankan programnya.
  3. Jika ingin memanggil class Persegi deklarasi private di bagian float sisi  harus di hapus biar program bisa di proses.

# Protected

Modifier protected akan membuat member dan class hanya bisa diakses dari:
  • Class itu sendiri.
  • Sub class atau class anak.
  • Package (class yang berada satu package dengannya).
Modifier protected juga hanya boleh digunakan pada member saja.

Contoh:

class PersegiPanjang extends BangunDatar {
    protected float panjang;
    float lebar;
   
    @Override
    float luas(){
        float luas = panjang * lebar;
        System.out.println("Luas Persegi Panjang:" + luas);
        return luas;
    }
   
    @Override
    float keliling(){
        float kll = 2*panjang + 2*lebar;
        System.out.println("Keliling Persegi Panjang: " + kll);
        return kll;
    }
}
Pada contoh di atas, kita memberikan modifier protected pada atribut Panjang.

Apabila kita coba mengakses dari class yang satu package dengannya, maka tidak akan terjadi error.

Namun, apabila kita mencoba mengakses dari luar package seperti ini:


Maka akan terjadi Error.

Oke Untuk Berikutnya akan Saya tunjukkan Package BangunDatar menggunakan beberapa Modifier.

# Class BangunDatar

package BangunDatar;

public class BangunDatar {
    float luas(){
        System.out.println();
        System.out.println("============================");
        System.out.println("Menghitung laus bangun datar");
        return 0;
    }
   
    float keliling(){
        System.out.println("Menghitung keliling bangun datar");
        System.out.println("============================");
        System.out.println();
        return 0;
    }
}

# Class Persegi

package BangunDatar;
class Persegi extends BangunDatar {
    private float sisi;

    @Override
    float luas(){
        float luas = sisi * sisi;
        System.out.println("Luas Persegi: " + luas);
        return luas;
    }

    @Override
    float keliling(){
        float keliling = 4 * sisi;
        System.out.println("Keliling Persegi: " + keliling);
        return keliling;
    }
}

# Class Lingkaran

package BangunDatar;
public class Lingkaran extends BangunDatar{
   
    // jari-jari lingkaran
    protected float r;

   
    @Override
    float luas(){
        float luas = (float) (Math.PI * r * r);
        System.out.println("Luas lingkaran: " + luas);
        return luas;
    }
   
    @Override
    float keliling(){
        float keliling = (float) (2 * Math.PI * r);
        System.out.println("Keliling Lingkaran: " + keliling);
        return keliling;
    }

    protected String getName(Object r2) {
        return null;
    }
   
}

# Class PersegiPanjang

package BangunDatar;
class PersegiPanjang extends BangunDatar {
    protected float panjang;
    protected float lebar;
   
    @Override
    float luas(){
        float luas = panjang * lebar;
        System.out.println("Luas Persegi Panjang:" + luas);
        return luas;
    }
   
    @Override
    float keliling(){
        float kll = 2*panjang + 2*lebar;
        System.out.println("Keliling Persegi Panjang: " + kll);
        return kll;
    }
}

# Class Segitiga

package BangunDatar;
public class Segitiga extends BangunDatar {
   
    float alas;
    float tinggi;

    @Override
    float luas() {
        float luas = (float) 1/2 * (alas * tinggi);
        System.out.println("Luas Segitiga: " + luas);
        return luas;
    }  

    @Override
    float keliling(){
        float miring = (float) Math.sqrt((alas*alas) + (tinggi*tinggi));
        float keliling = (float) alas+tinggi+miring;
        System.out.println("Keliling Lingkaran: " + keliling);
        return keliling;
    }
}

# Class Proses

package BangunDatar;

public class Proses {
    public static void main(String[] args) {
       
        // membuat objek bangun datar
        BangunDatar bangunDatar = new BangunDatar();
       
        // membuat objek persegi dan mengisi nilai properti
        Persegi persegi = new Persegi();
       
        // membuat objek Lingkaran dan mengisi nilai properti
        Lingkaran lingkaran = new Lingkaran();
        lingkaran.r = 22;
       
        // membuat objek Persegi Panjang dan mengisi nilai properti
        PersegiPanjang persegiPanjang = new PersegiPanjang();
        persegiPanjang.panjang = 8;
        persegiPanjang.lebar = 4;
       
        // membuat objek Segitiga dan mengisi nilai properti
        Segitiga Segitiga = new Segitiga();
        Segitiga.alas = 12;
        Segitiga.tinggi = 8;
       
       
        // memanggil method luas dan keliling
        bangunDatar.luas();
        bangunDatar.keliling();
        System.out.println();
       
        persegi.luas();
        persegi.keliling();
        System.out.println("============================");
        System.out.println();
       
        lingkaran.luas();
        lingkaran.keliling();
        System.out.println("============================");
        System.out.println();
       
        persegiPanjang.luas();
        persegiPanjang.keliling();
        System.out.println("============================");
        System.out.println();
       
        Segitiga.luas();
        Segitiga.keliling();
        System.out.println("****************************");
    }
}

# Output Yang Keluar


Penjelasan Singkat Untuk Penerapan Modifier di Java

Class Lain :
package com.tutorial;

public class Lain {

     // bagian ini dapat diakses oleh siapa pun
     public static void methodPublic() {
        System.out.println("Lain : Public");
    }
    // ini hanya dapat diakses oleh class yang bersangkutan
    private static void methodPrivate() {
        System.out.println("Lain : Private");
    }
    // ini hanya dapat diakses oleh class dalam package yang sama
    static void methodDefault() {
        System.out.println("Lain : Default");
    }
    // ini hanya dapat diakses oleh class dalam package yang sama
    // dan subclassnya
    protected static void methodPreotected() {
        System.out.println("Lain : Protected");
    }
}

Class Main :
package com.tutorial;

public class Main {
    public static void main (String[] args){
        System.out.println();
        // public, private, default, dan protected

        // dengan access modifier public, dapat diakses
        Lain.methodPublic();

        // dengan access modifier private, tidak dapat diakses
        //Lain.methodPrivate();

        // karena ada dalam package yang sama, maka dapat diakses
        // jika Di package yang lain tidak akan bisa diakses
        Lain.methodDefault();

        // karena ada dalam package yang sama, maka dapat diakses
        // jika Di package yang lain tidak akan bisa diakses
        Lain.methodPreotected();
       
        System.out.println();
    }
}
Output :

Untuk Lebih jelasnya bisa di klik link berikut : https://www.youtube.com/watch?v=GSQyfc1HkKM&t=868s



Sumber :

Moh. Shohibul Wafa, S. M. (2022). MODUL 4 – TINGKATAN AKSES MEMBER DAN CLASS. 1-8.

Muhardian, A. (2022, Maret 22). Belajar Java OOP: Memahami Tingkatan Akses Member dan Class (Modifier). Retrieved from Petani kode: https://www.petanikode.com/java-oop-modifier/


Posting Komentar

Lebih baru Lebih lama

نموذج الاتصال