Tugas Minggu 5 - Alpro 2 - Si UNIPDU

 Modifier Dalam Java


Pengertian Modifier

     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 member 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

Umumnya ada 3 macam modifier dalam Java, yaitu; public, private, dan protected. Setiap modifier memiliki jangkauan tertentu jika digunakan.


// Public Modifier

Modifier public akan membuat member dan class bisa di akses dari mana saja. Berikut contoh penggunaan modifier.

class Student {
   public String nameStudent;
    public changeName(String newName) {
    this.nameStudent = newName; 
  } 
}
Pada class Student diatas 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 (+).


// Private Modifier

Modifier private akan membuat member hanya bisa diakses oleh dari dalam class itu sendiri. Dengan catatan, modifier private tidak bisa diberikan pada class, enum, dan interface. Modifier private hanya bisa diberikan kepada member class.

class Student {
   private String name;
    public void setName(String name) {
    this.name = name; 
  }
    public String getName(){
    return this.name;
  }
}

Contoh diatas, kita memberikan modifier private dan atribut name dan modifier public pada method setName() dan getName().

Apabila kita mencoba akses langsung atribute name. Seperti ini.

Student mStudent = new Student()
mStudent.name = "Pukidi"; //disini akan akan error karena String name kita private


//Protected Modifier

Modifier Protected akan member dan class hanya bisa
diakses dari:
1. Class itu sendiri
2. Subclass atau class anak
3. Package (class yang berada satu package dengannya).

Modifier Protected hanya bisa digunakan pada
member saja.

package modifier;

class Person {
   protected String name;
    public void setName(String name) {
    this.name = name; 
  }
    public String getName(){
    return this.name;
  }
}
Pada contoh diatas kita memberikan modifier Protected
pada atribut name. Apabila kita coba akses dari class
yang satu package dengannya, maka akan akan terjadi
error.

Namun, jika kita akses dari luar package. Maka seperti ini

import modifier.Student;

public class author{
    Student nStudent = new Student();
    
    public author(){
       //akan terjadi error karena atribut name
       //telah memberikan modifier protected
       nStudent name = "Pukidi";
    }
}

Penerapan modifier di dalam class bangunDatar

// 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 * 4;
          System.out.println("Keliling Persegi: " + kelilin
          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 Persegi panjang


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 Process


package BangunDatar; 

public class Process {
    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("****************************");
    }
}

// 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



Komentar

Postingan populer dari blog ini

Tugas 13 - Alpro 1 - SI UNIPDU