Anda di halaman 1dari 20

INNER CLASS

OOP (Object Oriented Programming 1)


INNER CLASS
• Inner Class adalah class (kelas dalam) didalamnya class (kelas luar), class
merupakan sebuah kerangka model/blueprint yang digunakan sebagai
tempat menaruh atribut seperti variable, method, konstruktor, dll.
• Dapat menambahkan sebuah class (kelas dalam) didalam class (kelas
luar) atau bisa disebut juga Nested Class, contoh lainnya seperti syntax
pengkondisian if, yaitu kita dapat menambahkan if didalam if.
• Inner Class atau Class Dalam mempunyai hah akses pada atribut atau
method yang berada pada ClassLuar meskipun dalam kondisi modifier
private, sebaliknya Class Luar tidak memiliki hak akses pada Class
Dalam.
Inner Class pada Java
• Pada dasarnya Inner Class atau Nested Class digunakan untuk
mengelompokan class pada satu tempat serta Menciptkan code yang
readable dan maintainable pada java, syntax dasar untuk membuat Inner
Class, seperti berikut :
class KelasLuar{
//Statement pada Class Luar
class KelasDalam{
//Statement pada Class Dalam
}
}
• Karena Inner Class menggunakan Instance dari ClassLuar, maka
membernya tidak dapat didekalarasikan dengan static.

Terdapat 2 jenis Inner Class, yaitu non-static dan static


Inner Class non-static
• Inner Class adalah class yang tidak berada pada top level atau class
yang dideklarasikan didalam class lain(Outer class). untuk mengakses
variable atau method pada class luar, kita perlu membuat
Instance/Objek Class Luar didalam Inner Class.

• Innerclass memerlukan sebuah Instance/Objek dari ClassLuar untuk


mengakses secara langsung mathod atau variablenya, kemuadian kita
Instance Inner Classnya. 
public class KelasLuar {
//Class dalam/Inner Class Pertama
private class Mobil{
private String merk = "SUZUKI"; public static void main(String[] args){
//Membuat Instance dari KelasLuar
private float kecepatan = 360.0f; KelasLuar outerclass = new KelasLuar();
private void jalankan(){ //Membuat Instance dari KelasDalam (Mobil)
System.out.println("Merk Mobil: "+merk); KelasLuar.Mobil data1 = outerclass.new Mobil();
//Membuat Instance dari KelasDalam (Pengguna)
System.out.println("Kecepatan Mobil: "+kecepatan);
KelasLuar.Pengguna data2 = outerclass.new Pengguna();
}
} //Menampilkan Hasil Output
System.out.println("===== DATA DARI CLASS MOBIL ========");
data1.jalankan();
System.out.println("===== DATA DARI CLASS PENGGUNA =====");
//Class dalam/Inner Class Kedua data2.identitas();
private class Pengguna{ }
private String nama = “Asep"; }
private int umur = 19;
private void identitas(){
System.out.println("Nama Saya: "+nama);
System.out.println("Usia Saya: "+umur);
}
}
Inner Class static
• Untuk mengubah Inner Class menjadi static, kita hanya perlu
menambahkan kata kunci static di belakang class, Yang membedakan
class static dengan non-static adalah pada class static kita tidak perlu
Menginstance/Membuat objek dari classLuar terlebih dahulu, Inner
Class static hanya perlu membuat instance dari classDalamnya saja.
• Inner Class static lebih mudah dan praktis digunakan dibandingkan
dengan non-static.
//Outer Class/Kelas Luar
public class KelasLuar {

public static void main(String[] args){


//Class dalam/Inner Class Static //Membuat Instance dari Kelas Dalam (Programming)
private static class Programming{ KelasLuar.Programming MyLanguage = new
KelasLuar.Programming();
private String language;
private void setLanguage(String language){ //Memasukan Nilai/Value
MyLanguage.setLanguage("Java");
this.language = language;
} //Menampilkan Hasil Output
System.out.println("Saya Sedang Mempelajari:
private String getLanguage(){ "+MyLanguage.getLanguage());
return language; }
}
}
}
Local Inner Class
• Adalah inner class yang dideklarasikan di dalam Method.
• Kita dapat mendeklarasikan local class di dalam block(expressions,
statement dan yang lainnya). Misalnya kita dapat mendeklarasikan
local class dalam method atau body iterasi for dan flow kontrol if
 public void printOriginalNumber(){
public class DemoLocalClass {         System.out.println("Original number : " + phoneNumber1);
  String format = "[^0-9]";       }     
  public static void validatePhoneNumber(String phoneNumber1){     }
    final int numberLength = 12;      
    class PhoneNumber{     PhoneNumber myNumber = new PhoneNumber(phoneNumber1);
      String formatNumber = null;     myNumber.printOriginalNumber();
         
      PhoneNumber(String phoneNumber){     if(myNumber.getNumber() == null)
        //numberLength = 10;       System.out.println("Number is invalid");
        String currentNumber = phoneNumber.replaceAll(format, "");     else
        if(currentNumber.length() == numberLength)       System.out.println("Number : " + myNumber.getNumber());  
            formatNumber = currentNumber;    }
        else      
            formatNumber = null;      public static void main(String[] args){
      }     validatePhoneNumber("0858-6722-9783");
         }
      public String getNumber(){ }
        return formatNumber;
      }
     
• Mendeklarasikan local class PhoneNumber didalam class method
validatePhoneNumber. Kode program diatas akan mengecheck
numberPhone berdasarkan format dan length yang telah ditentukan.
• Bila numberPhone yang dimasukan sesuai format akan ditampilkan
hasilnya, dan sebaliknya bila tidak sesuai format(mengandung
karakter ilegal) keluaran yang ditampilkan invalid. 
Anonymous Non Static Inner Class
• Anonymous Class adalah salah satu konsep dari class atau interface
pada java, yang digunakan untuk mengdeklarasikan dan
menginisialisasi objek dari class lain dalam waktu bersamaan, dengan
menggunakan Anonymous Class, kita dapat mempersingkat kode
program, Anonymous Class hampir sama dengan Inner Class, hanya
saja tidak memiliki nama dan hanya memiliki body.
• Dengan menggunakan Class Anonymous, kita tidak perlu
menggunakan kata kunci implements untuk menginplementasikan
interface pada kelas yang diwariskannya, kita hanya perlu membuat
Instance dari class tersebut pada class yang ingin diwariskan.
Anonymous inner class
• Anonymous inner class adalah suatu inner class yang di deklarasikan
tanpa nama kelas.
• Suatu anonymous inner class tidak dapat secara bersamaan menjadi
subclass dari class yang telah di deklarasikan dan juga sebagai kelas
implementasi dari suatu interface. Tujuan utama dari anonymous
inner class adalah mengoverride satu atau lebih method dari super
classnya atau mengimplement semua method dari suatu interface.
contoh
• Perlu diketahui, bahwa untuk anonymous class ini mengandung
beberapa komponen pendukung. Beberapa komponen pendukung
tersebut, yaitu :- Operator new- Nama dari interface atau extends
class - Tanda Kurung yang mengandung argument atau yang lainnya.
Seperti halnya normal class. Akan tetapi ketika kita menggunakan
interface, kita tidak dapat menggunakan constructor. Jadi kita
mengosongkan tanda kurung, seperti contoh diatas.-Body
• Karena anonymous class ini dideklarasikan dalam sebuah expressi,
maka class tersebut menjadi bagian dari statement
• Access local variabel berdasarkan scope class yang ditempatinya dan access
member dari anonymous classSeperti halnya local class, anonymous class
juga dapat capture variabel. Class ini memiliki kesamaan dalam hal access
local variabel berdasarkan scope dari class yang ditempatinya, seperti :
• Anonymous class dapat mengakses member dari class yang ditempatinya
• Anonymous class tidak dapat mengakses local variabel dari scope class yang
ditempatinya apabila local variabel tersebut tidak dideklarsikan final atau
effectively final
• Seperti nested class, dalam deklarasi tipe(variabel) dalam anonymous class
dapa sama(shadow) dengan pendeklarasian variabel dalam scope class yang
ditempatinya.
• Anonymous juga memiliki point-point yang tidak di perbolehkan
untuk dilakukan, seperti :
• Kita tidak dapat mendeklarasikan static initializer atau member
interface dalam anonymous class
• Kita dapat mendeklarasikan static member dalam anonymous class
apabila dideklarasikan sebagai constant variabel.
• Kita juga dapat mendeklarasikan beberapa point dalam anonymous
class, seperti :
• Fields
• extra method
• instance initializer
• local class
• Terpenting, kita tidak dapat mendeklarasikan constructor dalam
anonymous class.
SOAL
• BUAT APLIKASI OOP YANG MENGANDUNG INNER CLASS (Static / non
Static/ local / anonymous)
• SATU KELOMPOK SATU APLIKASI
• Tunjukan bagian mana yang menggandung inner class
• NamaKelompok_KLS

Anda mungkin juga menyukai