Nama : Martha Natalina Damanik
Kelas : MI 92
Pertemuan 5
Abstract Class, Interface, Inner Class
A. Abstract class
Abstract class memiliki suatu atau lebih abstract method,biasanya dijadikan kelas induk/super dari kelas-kelas yang membuat objek, dan tidak dapat diinstansiasi.
Program MakhlukHidup.java
// Program ini bukan fungsi utama karena tidak memeliki public static void main(String [] args) {
public abstract class MakhlukHidup {
//kelas abstract dari kelas MaklukHidup
protected boolean BisaTerbang = false;
// tipe data Boolean dengan atribut BisaTerbang dan nilai false
protected String Nama;
// tipe data String dengan atribut Nama
protected int JlhKaki;
// tipe data integer dengan atribut JlhKaki
public MakhlukHidup(String Nama1, int JlhKaki1,boolean
BisaTerbang1) {
//constructor MakhlukHidup
//method MakhlukHidup dengan tipe data String parameter Nama1,tipe data integer parameter JlhKaki, tipe data Boolean parameter BisaTerbang1
this.Nama = Nama1;
// untuk mengeset atribut nama dengan nilai Nama1
this.JlhKaki = JlhKaki1;
// untuk mengeset atribut JlhKaki dengan nilai Jlhkaki1
this.BisaTerbang = BisaTerbang1;
// untuk mengeset atribut BisaTerbang dengan nilai BisaTerbang1
}
abstract void bernafas();
//memanggil abstract method bernafas dan tidak ada implementasi
public void status() {
//memanggil abstract method status dan tidak ada implementasi
System.out.println("Nama : " +Nama);
//memanggil atribut nama
System.out.println("Jumlah kaki : " +JlhKaki);
//memanggil atribut Jumlah kaki
System.out.println("Bisa terbang : " +BisaTerbang);
//memanggil atribut bisa terbang
}
}
Program Manusia.java
Ini adalah proram fungsi utama
public class Manusia extends MakhlukHidup {
//kelas Manusia adalah turunan dari kelasMakhlukHidup
Manusia(String Nama) {
// constructor Manusia
// Method Manusia dengan tipe data String dan parameter Nama
super(Nama,2, false);
//memanggil kelas induk yaitu kelas MakhlukHidup dengan nama sayuti, jumlah kaki 2 dan bisaterbang false
}
public void bernafas() {
// memanggil method bernafas
System.out.println(Nama+" bernafas dengan menghirup 02");
//memanggil atribut nama dengn nilai bernafas denganmenghiup O2
}
public static void main(String [] args) {
//memnggil fungsi utama
Manusia m = new Manusia ("Sayuti");
//membuat objek baru dari kelas Manusia yaitu m = memanggil constructor Manusia
m.status();
//memanggil method status dari objek m dari kelas Manusia
m.bernafas();
//memanggil method status dari objek m dari kelas Manusia
}
}
Hasil output program Manusia

Program Tumbuhan.java
public class Tumbuhan extends MakhlukHidup {
//kelas Tumbuhan adalah turunan dari kelasMakhlukHidup
Tumbuhan() {
// constructor Tumbuhan
// Method Tumbuhan
super(Nama,0, false);
//memanggil kelas induk yaitu kelas MakhlukHidup dengan nama Bayam, jumlah kaki 0 dan bisaterbang false
}
public void bernafas() {
// memanggil method bernafas
System.out.println(Nama+" bernafas dengan menghirup CO2");
//memanggil atribut nama dengn nilai bernafas denganmenghiup CO2
}
public static void main(String [] args) {
//memnggil fungsi utama
Tumbuhan t = new Tumbuhan ("Bayam");
//membuat objek baru dari kelas Tumbuhan yaitu t = memanggil constructor Tumbuhan
t.status();
//memanggil method status dari objek t dari kelas Tumbuhan
t.bernafas();
//memanggil method bernafas dari objek t dari kelas Tumbuhan
}
}
B. Interface
Adalah suatu kelas yang berisi method-method tanpa implementasi, tanpa modifier abstract jika ada atribut maka berlaku sebagai konstata.
Program Pekerjaan. java
interface Pekerjaan {
//interaface dengan nama pekerjaan
public void namaPekerjaan();
//method pekerjaan dan tanpa implementasi
public void gaji();
//method gaji dan tanpa implementasi
}
Program Sasya.java
public class Sasya extends Manusia implements Pekerjaan {
//kelas Sasya turunan kelas Manusia tempat implementasi dari interface Pekerjaan
public Sasya() {
//memanggil method Sasya
//memanggil constuktor Sasya
super("Sasya");
// memanggil constructor kelas induk dengan nama Sasya
}
public void namaPekerjaan () {
//memanggil method namaPekerjaan dari kelas inteface Pekerjeraan
System.out.println("Pekerjaan :Sekretaris");
//memanggil atribut Pekerjaan dengan nilai sekretaris
}
public void gaji() {
// memanggil method gaji dari kelas interface Pekerjaan
System.out.println("Gaji : Rp. 3.000.00");
//memanggil atribut gaji dengan nilai Rp.3.000.000
}
public static void main(String[] args) {
//fungsi utama
Sasya s = new Sasya();
//membuat objek baru dari kelas Sasta yaitu s = memanggil constructor Sasya
s.status();
//memanggil method status dari objek s dari kelas Manusia
s.bernafas();
//memanggil method bernafas dari objek s dari kelas Manusia
s.namaPekerjaan();
//memanggil method namaPekerjaan dari objek s kelas inteface Pekerjeraan
s.gaji();
// memanggil method gaji dari objek s kelas interface Pekerjaan
}
}
Hasil output program Sasya

C. Inner class
Adalah kelas yang disisipkan did lam kelas yang lain, fungsi untuk mendukung suatu proses yang akan dijalankan oleh kelas utamanya, dan bersifat tersarang dari kelas utamanya.
Program JantungManusia.java
class Orang {
// kelas orang
private int jumlKaki=2;
//tipe data integer atribut jumlKaki dengan nilai= 2
public void dengarBunyiJantung() {
// method dengarBunyiJantung
Jantung j =new Jantung();
//membuat objek baru dengan nama j =memanggilconstruktor jantung
j.bunyiJantung();
//memanggil method BunyiJantung dari objek j kelas Orang
}
public void tahanNafas() {
//method tahanNafas
System.out.println("Jantung berhenti berdetak!");
}
//inner class
class Jantung {
//kelas Jantung
public void bunyiJantung() {
//memanggil method bunyiJantung dari kelas Orang
System.out.println("deg...deg...deg...");
}
public void istirahat() {
//method istirahat
System.out.println("Silangkan ke "+jumlKaki+" kaki.");
tahanNafas();
}
}
}
class JantungManusia {
//kelas JantungManusia
public static void main(String[] args) {
//fungsi utama
Orang o = new Orang();
//membuat objek baru dengan nama o dari kelas Orang
Orang.Jantung p = o.new Jantung();
//membuat objek baru dengan nama p dari kelas Orang dan kelas Jantung
o.dengarBunyiJantung();
//memanggil method dengarBunyiJantung dari objek o dari kelas Orang dan kelas Jantung
p.istirahat();
//memanggil method istirahat dari p dari kelas Jantung
}
}
Hasil output JantungManusia
