Inner Class

Inner Class

1

Inner class adalah class yang didefinisikan di dalam suatu class (outer class). Inner Class adalah kelas yang disisipkan  di dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner Class bersifat tersarang terhadap kelas – kelas utamanya, seperti halnya blok penyeleksian  (if, for) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.
Keuntungan
Ada 2 keuntungan penggunaan inner class:
1.       Membuat outer class menjadi lengkap dan independen tanpa bantuan class lain dalam operasinya.
2.       Methods milik outer class dan inner class memiliki akses terhadap private methods dan private instance variables satu sama lain.
Aturan
1.       Bila ada pemanggilan method dalam inner class namun inner class tidak memiliki method tersebut, maka program akan menganggap bahwa outer class memiliki method tersebut. Bila tidak, maka akan terjadi error.
2.       Untuk memanggil method milik inner class dari method milik outer class, hal ini dilakukan melalui objek inner class sebagai objek pemanggil. Contoh: lihat prog AkunBank.java.
3.       Inner class tidak selalu harus private; public pun bisa.
4.       File .class hasil kompilasi dari inner class memiliki system penamaan sendiri. Pada contoh hasil kompilasi program AkunBank.java, akan dihasilkan 2.
class file yaitu AkunBank.class dan AkunBank$Uang.class.
5.       Syntax: Sebelum kita menelaah lebih jauh, kita perlu mengerti betul access level baik untuk class, class fields maupun class methods.

Contoh Program yang saya Implementasikan Kedalam Bahasa Pemograman (C#, C++, dan Java)

kali ini program dengan C# :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OOP2_Widy_InnerClass2
{
class Program
{
public static void Main(string[] args)
{
satu s = new satu();
satu.dua sd = new OOP2_Widy_InnerClass2.satu.dua();

//persegi

Console.WriteLine("                           *Menghitung Luas Persegi*");

Console.WriteLine();
Console.Write("Masukkan sisi persegi = ");
s.A = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Luas Persegi = {0}",s.Persegi());
Console.WriteLine("\n\n");

//persegi panjang

Console.WriteLine("                        *Menghitung Luas Persegi Panjang*");

Console.WriteLine();
Console.Write("Masukkan Panjang = ");
sd.A = Convert.ToInt32(Console.ReadLine());
Console.Write("Masukkan Lebar = ");
sd.B = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Luas Persegi Panjang = {0}",sd.PersegiPanjang());

Console.Write("\n\nPress any key to continue . . . ");
Console.ReadKey(true);
}
}

class satu
{
protected int a;
protected int b;

public int A
{
get { return a; }
set { a = value; }
}

public int B
{
get { return b; }
set { b = value; }
}

public int Persegi()
{
return A*4;
}

public class dua : satu
{
public int PersegiPanjang()
{
return A*B;
}
}
}
}

Hasilnya Sebagai Berikut :

Capture5.1

Dan yang Berikutnya adalah contoh Bahasa Pemograman C++ :


#include <cstdlib>
#include <iostream>

using namespace std;
class Satu
{
protected : int a,b;

public :
void setA(int x)
{
a = x;
//cout<<a;
}

int GetA()
{
return a;
}

void setB(int y)
{
b = y;
}

int GetB()
{
return b;
}

int Persegi()
{
return GetA()*4;
}

class Dua;
};

class Satu::Dua : public Satu
{
public : void Show()
{
cout<<"Halo"<<endl;
}
public:
int PersegiPanjang()
{
return GetA()*GetB();
}
};
int main(int argc, char *argv[])
{
Satu s;
Satu::Dua sd;

int a,b;

//persegi
cout<<"                              Menghitung Luas Persegi"<<endl<<endl;
cout<<"Masukkan sisi persegi = ";
cin>>a;
s.setA(a);
cout<<"Luas Persegi = "<<s.Persegi()<<endl;
cout<<endl<<endl<<endl;

//persegi panjang

cout<<"                         Menghitung Luas Persegi Panjang"<<endl<<endl;
cout<<"Masukkan Panjang = ";
cin>>a;
cout<<"Masukkan Lebar = ";
cin>>b;
sd.setA(a);
sd.setB(b);
cout<<"Luas Persegi Panjang = "<<sd.PersegiPanjang()<<endl<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Nah, Beginilah Hasilnya :
Capture5.2

Selanjutnya kita buat program Dengan menggunakan Bahasa Java :

package oop2_widy1_innerclass2;

import java.util.Scanner;

public class main {
private static Scanner baca = new Scanner(System.in);
public static void main(String[] args)
{
Satu s = new Satu();
Satu.Dua sd = s.new Dua();
int a,b;

//persegi
System.out.println("                     *Menghitung Luas Persegi*");
System.out.println();
System.out.print("Masukkan sisi persegi = ");
a = baca.nextInt();
s.setA(a);
System.out.println("Luas Persegi = "+s.Persegi());
System.out.println("\n\n");

//persegi panjang

System.out.println("                *Menghitung Luas Persegi Panjang*");
System.out.println();
System.out.print("Masukkan Panjang = ");
a = baca.nextInt();
System.out.print("Masukkan Lebar = ");
b = baca.nextInt();
sd.setA(a);
sd.setB(b);
System.out.println("Luas Persegi Panjang = "+sd.PersegiPanjang());

System.out.print("\n\nPress any key to continue . . . ");

}

}
class Satu
{
protected int a,b;

public void setA(int x)
{
this.a = x;
}

public int GetA()
{
return a;
}

public void setB(int y)
{
this.b = y;
}

public int GetB()
{
return b;
}

public int Persegi()
{
return GetA()*4;
}

class Dua extends Satu
{
public int PersegiPanjang()
{
return GetA()*GetB();
}
}
}

Hasilnya ini

Capture5.3

8 responses to “Inner Class

  1. Mbak broo, ada contoh lain yang lebih mudah ggak???

  2. waw…. asli.. keren bgt program2x.

  3. beyond words .. greetings

  4. klo boleh riquest ya mbk.. bikinkan program bahasa C donk mbak. bisa??
    hehe

  5. 🙂
    Pengertian dan Programnya Lengkap

  6. salut2.. kok bsa se keren itu siich mbkx..
    cntik lg.. pinter

  7. inner classssssssss ?
    kok jauh dari maknyanya “Inner Class adalah kelas yang disisipkan di dalam kelas yang lain.” mana class yang disisipin di kelas lain ? bukannya itu class yang disisipin di satu file :v

    setau gue itu mah cuma dua class dalam satu file bukan makna inner class. setau gue inner class ya kayak class menjadi member di kelas lain, atau hanya anonymous inner class.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s