Kode MK : MI Revisi Terakhir :
Bahan Ajar
Pemrograman Berorientasi Objek 2
Program Studi
Manajemen Informatika
Jenjang D3
2103T 05/09/13
Review konsep pemrograman
berorintasi objek
Encapsulation
Enheritance
Polimorphism
2Sesi 1
Mampu menjelaskan pengertian
encapsulation
Mampu m
embuat class
Mampu menjelaskan pengertian inheritance
Mampu menjelaskan pengertian
polimorphism
Encapsulation
Encapsulation adalah salah satu dari empat
konsep PBO: encapsulation, inheritance, polymorphism, dan abstraction
Encapsulation adalah teknik pembuatan filed-field
privat dalam kelas dan menyediakan akses ke field melalui metode publik. Jika filed dideklarasikan
sebagai privat, filed ini tidak dapat diakses oleh
siapa pun di luar kelas, sehingga menyembunyikan field dalam kelas.
Maka, enkapsulasi juga disebut sebagai
Encapsulation
Manfaat utama dari enkapsulasi adalah
kemampuan untuk memodifikasi kode di kelas ini tanpa mengubah kode lain yang menggunakan
kode di kelas ini.
Dengan fitur ini Encapsulation memberikan
rawatan, fleksibilitas dan ekstensibilatas untuk kode kita.
Encapsulation terimplementasi kedalam kelas
Contoh Encapsulation
Perhatikan class berikut:
public class EncapTest{ private String name; private int age;
public int getAge(){ return age;
}
public String getName(){ return name;
}
public void setAge(int newAge){ age = newAge;
}
public void setName(String newName){ name = newName;
} }
Contoh Encapsulation
Metode public dipakai untuk mengakses
filed dalam kelas ini dari luar kelas ini.
Biasanya, metode ini disebut sebagai getter
dan setter.
Oleh karena itu setiap kelas yang ingin
mengakses variabel harus mengaksesnya melalui getter dan setter.
Contoh Encapsulation
Variabel dari kelas EncapTest dapat diakses dengan cara:
public class RunEncap{
public static void main(String args[]){ EncapTest encap = new EncapTest(); encap.setName("James"); encap.setAge(20); System.out.print("Name : " + encap.getName()+ " Age : "+ encap.getAge()); } }
Keuntungan Encapsulation
Field dari kelas dapat dibuat read-only or
write-only
Kelas mempunyai kendali penuh apa-apa yang
disimpan kedalam filednya
User dari kelas tidak mengetahui bagaimana
kelas menyimpan datanya. Kelas dapat
mengubah tipe data atau field dan user dari
Pewarisan (Inheritance)
Semua class dalam Java, termasuk class yang membangun Java
API, merupakan subclass dari superclass Object.
Pewarisan (inheritance)
Superclass
class yang letaknya di atas class tertentu di dalam hierarki.
Subclass
class yang letaknya di bawah class tertentu di dalam hierarki.
Pewarisan (inheritance)
Keuntungan penggunaan Inheritance dalam OOP :
Reusability
Ketika behavior(method) dideklarasikan dalam superclass,
behavior tersebut otomatis diwariskan ke seluruh subclass
Jadi, Anda dapat meng-enkode method hanya sekali dan method
tersebut dapat digunakan oleh seluruh subclass
Sebuah subclass hanya perlu mengimplementasikan perbedaan
Pewarisan (inheritance)
Untuk menggunakan sebuah class, gunakan keyword extends. Untuk lebih jelasnya, mari buat class parent sederhana,
misalkan kita mempunyai class parent bernama Person.
public class Person {
protected String name; protected String address; /** * Default constructor */ public Person(){ System.out.println(“Inside Person:Constructor”); name = ""; address = ""; } . . . . }
Pewarisan (inheritance)
Sekarang, kita buat class lain bernama Student
Karena Student juga termasuk Person, kita putuskan untuk
meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method yang telah ada di class Person.
Untuk itu, kita bisa menulis :
public class Student extends Person { public Student(){
System.out.println(“Inside Student:Constructor”); }
. . . . }
Pewarisan (inheritance)
Ketika sebuah object Student diinstansiasi, default constructor dari superclass Student dipanggil
secara implisit untuk melakukan inisialisasi seperlunya.
Setelah itu, pernyataan di dalam constructor
Pewarisan (inheritance)
Untuk memperjelasnya, perhatikan kode
dibawah ini,
Dalam kode ini, kita membuat sebuah object
dari class Student. Hasil dari program
adalah:
public static void main( String[] args ){ Student anna = new Student();
}
Inside Person:Constructor Inside Student:Constructor
Pewarisan (inheritance)
Keyword “super”
Sebuah subclass dapat juga memanggil secara eksplisit
sebuah constructor superclass yang ada diatasnya.
Dapat dilakukan dengan menggunakan pemanggilan
constructor super.
Pemanggilan constructor super didalam constructor
subclass akan mengakibatkan eksekusi dalam
constructor yang relevan dari superclass, berdasarkan passing argument-nya.
Keyword “super”
Sebagai contoh, pada contoh sebelumnya yaitu
class Person dan Student, kita tunjukkan sebuah contoh pemanggilan constructor super.
Tuliskan kode berikut untuk class Student
public Student(){
super( "SomeName", "SomeAddress" ); System.out.println("Inside
Student:Constructor"); }
Keyword “super”
Beberapa hal untuk diingat ketika menggunakan pemanggilan constructor super :
Pemanggilan super() HARUS DIJALANKAN SESUAI DENGAN
STATEMENT PERTAMA DALAM SEBUAH CONSTRUCTOR.
Pemanggilan super() hanya dapat digunakan di dalam definisi
constructor.
Hal ini menjelaskan bahwa constructor this() dan pemanggilan
super() TIDAK DAPAT DIJALANKAN SECARA BERSAMAAN DI DALAM CONSTRUCTOR YANG SAMA.
Keyword “super”
Penggunaan lainnya dari super mengarah pada member dari superclass.
Sebagai contoh,
public Student() {
super.name = “somename”;
super.address = “some address”; }
Meng-override method
Jika sebuah subclass menginginkan implementasi
yang berbeda terhadap method dari
superclassnya, maka salah satu caranya dapat dilakukan dengan meng-override method
bersangkutan.
Sebuah subclass dapat meng-override method
superclassnya dengan menyediakan sebuah implementasi baru untuk method tersebut.
Contoh
Berikut ini merupakan implementasi dari method getName didalam superclass Person
public class Person { :
:
public String getName(){
System.out.println("Parent: getName"); return name;
} }
Contoh
Untuk meng-override method getName dari superclass Person,
di dalam subclass Student, kita tulis :
Sekarang, ketika kita memanggil method getName dari object
subclass Student, method getName yang di-override akan dipanggil, dan hasilnya akan menjadi,
public class Student extends Person{ :
:
public String getName(){
System.out.println("Student: getName"); return name; } : } Student: getName
Polymorphism
Polymorphism
Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object.
polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu
superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan.
Polymorphism
Pada contoh sebelumnya, kita diberikan parent class yaitu
Person dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya dari Person yaitu Employee
Polymorphism
Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh,
public static main( String[] args ) { Person ref;
Student studentObject = new Student(); Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada // sebuah object Student
Polymorphism
misalnya, kita memiliki sebuah method getName dalam superclass Person. Dan kita meng-override method ini di kedua subclass yaitu Student dan Employee
public class Student {
public String getName(){
System.out.println(“Student Name:” + name); return name;
} }
public class Employee {
public String getName(){
System.out.println(“Employee Name:” + name); return name;
} }
Polymorphism
Kembali ke method utama kita, ketika kita
mencoba memanggil method getName dari
referensi Person ref, method getName dari object Student akan dipanggil.
Sekarang, jika kita memberi ref kepada object
Employee, maka method getName juga akan dipanggil
Polymorphism
public static main( String[] args ) { Person ref;
Student studentObject = new Student(); Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada object Student
//getName dari class Student dipanggil
String temp=ref.getName(); System.out.println( temp );
ref = employeeObject; //titik referensi Person kepada object Employee
//getName dari class Employee dipanggil
String temp = ref.getName(); System.out.println( temp ); }
Polymorphism
Contoh lain yang menggambarkan polymorphism
adalah ketika kita mencoba untuk passing reference kepada method
jika kita memiliki sebuah method static
printInformation yang menerima referensi
Person sebagai parameter
public static printInformation( Person p ){ . . . .
Polymorphism
Sebenarnya kita dapat passing reference dari Employee dan Student kepada method
printInformation selama kedua class tersebut
merupakan subclass dari Person
public static main( String[] args ){
Student studentObject = new Student();
Employee employeeObject = new Employee();
printInformation( studentObject ); printInformation( employeeObject );
Casting Object
Instance dari class juga dapat di-casting menjadi instance
dari class lain, dengan satu batasan ::
Class asal dan tujuan harus direlasikan dalam inheritance, salah
satu class harus berupa subclass dari class lain.
Casting object digunakan untuk mengkonversi nilai
primitif menuju tipe yang lebih besar, beberapa object tidak perlu mengalami casting secara explisit.
Casting Object
Gunakan sintaks berikut untuk casting
object,
(classname)object
classname - nama class tujuan
Contoh Casting Object
Berikut ini merupakan contoh proses casting sebuah instance dari class VicePresident ke instance dari class Employee.
VicePresident merupakan subclass dari class Employee dengan beberapa informasi tambahan.
Employee emp = new Employee();
VicePresident veep = new VicePresident(); emp = veep;
// casting explisit
Exception Handling
Pengertian Exception Hirarki Kelas Exception Penanganan Exception
36
Mampu menjelaskan tentang eksepsi
Menggunakan perintah try-catch-finally
Menangani Exception pada program
Exception adalah kejadian yang muncul selama eksekusi
program dan dapat mengganggu alur normal program
Exception dilempar oleh program atau lingkungan runtime,
dan dapat ditangkap atau ditangani.
Error mirip dengan exception tetapi error mengakibatkan
situasi serius atau situasi yang tidak dapat dikembalikan (un-recoverable), dan tidak dapat ditangkap untuk ditangani
38
Pengertian Exception
Contoh:
•Error pembagian 0
•Mengakses elemen di luar jangkauan sebuah array •Input yang sifatnya invalid
•Hard disk crash
•Membuka file yang tidak ada
Kita dapat menulis kode untuk menangani
exceptions sehingga program dapat berlanjut.
Java mempunyai kelas-kelas exceptions yang
muncul selama program berjalan.
Super class untuk seluruh error dan exception
adalah kelas
Throwable
yang mempunyai dua
sub class
39
40
Hirarki Kelas Exception
Object
Throwable
Error Exception
Runtime Exception VirtualMachineError
42
Pesan Exception
Jika exception tidak ditangani oleh program, program akan berhenti dan menghasilkan pesan yang berisi tipe exception yang muncul dan di bagian mana dalam program munculnya exception.
Penanganan Exception
Penanganan Exception mengijinkan program untuk menangkap exception, menanganinya, dan kemudian melanjutkan eksekusi program.
Contoh Exception
1 class DivByZero {
2 public static void main(String args[]) { 3 System.out.println(3/0);
4 System.out.println(“Pls. print me.”); 5 }
didapatkan pesan kesalahan sebagai berikut
Exception in thread "main"
java.lang.ArithmeticException: / by zero at DivByZero.main(DivByZero.java:3)
Default handler
Menampilkan deskripsi exception
Menampilkan stack trace
Hirarki method dimana exception terjadi
Menghentikan program secara paksa
Blok
try
Langkah pertama membentuk penangan exception adalah meletakkan statements yang bisa menimbulkan exception didalam blok try.
try
{
statements
}
Statement
try harus disertai minimal
satu blok catch atau blok finally.
Jika
muncul
exception
didalam
statement try, exception ditangani
oleh penangan exception yang sesuai
dengan statement try ini.
Block
catch
Kita asosiasikan penangan exception
dengan statement try dengan menyediakan
satu atau lebih blok catch langsung setelah
blok try.
Tidak boleh ada kode intervensi antara
akhir pernyataan try dan awal dari
pernyataan catch pertama.
Contoh
try { statements; statements; } catch(ArithmeticException e) { System.out.println(“Error”); }1 class DivByZero {
2 public static void main(String args[]) { 3 try {
4 System.out.println(3/0);
5 System.out.println(“Setelah pembagian”); 6 } catch (ArithmeticException ae) {
7 //Dibagi dengan 0 -> ArithmeticException 8 System.out.println(ae);
9 }
10 System.out.println(“Setelah exception.”); 11 }
12 }
try { statements; statements; } catch(ArithmeticException e) { } catch(ArrayIndexOutofBoundsException e) { }
1 class MultipleCatch {
2 public static void main(String args[]) { 3 try {
4 int pembagi = Integer.parseInt(args[0]); 5 System.out.println(3/pembagi);
6 } catch (ArithmeticException exc) {
7 System.out.println(“pembagi adalah 0.”);
8 } catch (ArrayIndexOutOfBoundsException exc2) { 9 System.out.println(“Kurang argument.”);
10 }
11 System.out.println(“Setelah exception.”); 12 }
13 }
Nested try
1. class NestedTryDemo {2. public static void main(String args[]){ 3. try { 4. int a = Integer.parseInt(args[0]); 5. try { 6. int b = Integer.parseInt(args[1]); 7. System.out.println(a/b); 8. } catch (ArithmeticException e) {
9. System.out.println(“Error dibagi nol!"); 10. } 11. } catch (ArrayIndexOutOfBoundsException e) { 12. System.out.println(“Butuh 2 parameters!"); 13. } 14. } 15. }
finally
Block
Statement finally mendefinisikan blok
kode yang selalu dieksekusi, tanpa
memperhatikan terjadi exception atau
tidak.
Blok Finally sering dipakai untuk
menghapus resources atau menutup
koneksi baik terjadi exception maupun
tidak.
try {
statements; statements; }
catch(ArithmeticException e){ }
catch(ArrayIndexOutofBoundsException e){ }
finally
{ }
1 class FinallyDemo {
2 static void myMethod(int n) throws Exception{ 3 try {
4 switch(n) {
5 case 1: System.out.println("1st case"); 6 return;
7 case 3: System.out.println("3rd case"); 8 throw new RuntimeException("3!"); 9 case 4: System.out.println("4th case"); 10 throw new Exception("4!");
11 case 2: System.out.println("2nd case"); 12 } 13 } catch (RuntimeException e) { 14 System.out.print("RuntimeException: "); 15 System.out.println(e.getMessage()); 16 } finally { 17 System.out.println("try-block entered."); 18 } 19 } 20 // bersambung . . .
Contoh Try-Catch-Finally
21 public static void main(String args[]){ 22 for (int i=1; i<=4; i++) {
23 try {
24 FinallyDemo.myMethod(i); 25 } catch (Exception e){
26 System.out.print("Exception caught: "); 27 System.out.println(e.getMessage()); 28 } 29 System.out.println(); 30 } 31 } 32 }
Contoh Try-Catch-Finally
Exception Handling
(lanjutan)
Melempar Exception Statement throws
57
Menangani Exception pada program
Menggunakan throws
Membuat Exception sendiri
Statement
throw
Statement throw digunakan untuk melempar exception dari kode Java.
Kita juga dapat menciptakan exception buatan kita sendiri dan melemparnya (jika dibutuhkan) menggunakan statement throw .
Kita hanya dapat melempar objek dari instan yang diturunkan dari kelas Throwable.
throw exceptionObject;
Contoh:
int a = 6;
int b = 0;
if(b == 0) {
ArithmeticException e = new ArithmeticException(“Error”);
throw e; } else { System.out.println(a/b); }
Throwing Exception
Exceptions Wrapping
try { System.out.println(6/0); } catch(ArithmeticException e) {Exception ex = new Exception(e);
throw ex; }
Kita dapat melakukan wrapping Exception e menjadi Exception lain dan kemudian melemparkannya.
Statement
throws
Exception yang dilempar keluar dari method harus ditentukan oleh klausa throws.
Jika method mampu mengakibatkan exception yang tidak ditangani, method harus menentukan perilakunya sedemikian sehingga pemanggil method dapat menjaga diri terhadap exception.
Ini dikerjakan dengan klausa throws dalam deklarasi method.
Klausa throws mendaftarkan jenis exception yang mana method yang akan melemparkan.
Semua exception lain, yang mana method yang bisa melempar harus dideklarasikan dalam klausa throws, sebaliknya maka akan terjadi error kompilasi.
Jika method bisa melemparkan lebih dari satu exception maka semua exception harus dideklarasikan dengan pemisah koma.
Statement
throws
public void print(int a, int b)
throws ArithmeticException, NullPointerException {
Soal
Sebutkan lima contoh exception
Sebutkan apa saja keuntungan penanganan
exception dibanding cara konvensional untuk penangan error
Mengapa teknik exception handling tidak
digunakan untuk kontrol program konvensional
Jika tidak muncul exception dalam blok try,
kemana kontrol program akan dijalankan?
1. Dietel H.M., Dietel P.J., 2003, Java How to Program fifth
edition, Pearson Education, Inc, Prentice Hall, New Jersey.
Sierra, K, Bates, B, 2005, Head First Java, second edition,
O’Reilly Media, Inc. United States of America
Ralph Morelli, Ralph Walde, 2005, Java, Java, Java™:
Object-Oriented Problem Solving, Third Edition, Prentice Hall
Jonathan Knudsen, Patrick Niemeyer, 2005, Learning Java,
3rd Edition, Learning Java, 3rd Edition
Abstraksi
Konsep abstraksi
Kelas Abstract
Method Abstract
66Sesi 4
67
Abstraksi
Abstraksi adalah teknik desain yang
memfokuskan pada aspek penting dari entitas dan mengabaikan aspek yang kurang penting Abstraksi adalah alat penting untuk
Kelas abstract adalah kelas yang
diimplementasikan secara sebagian yang bertujuan untuk menyatakan konsep abstrak
Kelas abstract tersusun atas satu atau lebih
method-method abstract.
Kelas abstract tidak dapat diinstantiasi karena
merepresentasikan konsep abstrak
Sering muncul pada puncak hierarki kelas
object-oriented programming(OOP),
mendefinisikan segala type action/tindakan yang mungkin dengan object semua subclass dari class
Deklarasi Kelas Abstract
public abstract class Binatang {
}
Binatang adalah kelas abstract sehingga statement berikut tidak dapat dikompilasi.
Method abstract
Method di dalam abstract class tidak
mempunyai implementasi
Untuk membuat abstract method, tulis saja
deklarasi method tanpa body dan gunakan keyword abstract
Contoh:
Method Abstract
Contoh Abstract Class
public abstract class LivingThing { public void breath(){
System.out.println("Living Thing breathing..."); }
public void eat(){
System.out.println("Living Thing eating..."); }
/**
* abstract method walk
* Kita ingin method ini di-overrride oleh subclass dari * LivingThing
*/
public abstract void walk(); }
Konsep Abstract Class & Method
Kelas abstract tidak dapat diinstantiasi, artinya kita tidak dapat menciptakan objek dari kelas abstract dengan kata kunci new.
Kelas abstract hanya dapat dibuat sub kelas.
Kelas yang diturunkan dari kelas abstract harus melakukan override semua method abstract dari kelas induknya. Jika tidak mendefinisikan semua method maka kelas itu akan tetap menjadi kelas abstract.
Konsep Abstract Class & Method
Kelas abstract dapat mempunyai campuran method non abstract dan method abstract
Kelas abstract dan method abstract tidak dapat dideklarasikan sebagai final.
Method abstract tidak dapat dideklarasikan sebagai
static.
Method abstract tidak dapat dideklarasikan sebagai
Apa yang terjadi jika suatu kelas terdapat
method abstract?
Apa yang terjadi jika anda menurunkan
kelas dari kelas abstract?
Sebutkan sifat-sifat kelas abstract
Apa perbedaan method non abstract dan
method abstract
Interface
Konsep interface Penggunaan Interface, Implementasi Interface 75Sesi 5
Mampu menjelaskan pengertian dan konsep
interface
Mampu membuat interface
Mampu mengimplementasi interface
Interface
Interface
Adalah semacam blok spesial yang hanya berisi tanda tangan method
(dan mungkin konstan).
Menggambarkan tandatangan dari seperangkat method, tanpa body Menggambarkan cara standard dan publik penetapan behavior class Mengijinkan class,dengan mengabaikan lokasi mereka di dalam
hirarki class untuk menerapkan behavior.
CATATAN: Interface memperlihatkan polymorphism juga, sejak
program diperbolehkan memanggil sebuah method interface, dan versi yang sesuai dari method tersebut akan dieksekusi tergantung pada jenis object yang dilewatkan kepada pemanggilan method interface
Mengapa menggunakan
interface?
Untuk memiliki class yang tidak berhubungan yang
mengimplementasikan method yang sama.
Contoh:
Class Line dan MyInteger
Tidak berhubungan
Keduanya mengimplementasikan method
perbandingan
isGreater
isLess
Mengapa menggunakan
interface?
Untuk mengungkapkan sebuah interface
pemrograman object tanpa pernyataan
classnya
Untuk model multi inheritance yang
mengijinkan sebuah class untuk memiliki
lebih dari satu superclass.
Membuat interface
Untuk membuat sebuah interface, kita tulis:
public interface [InterfaceName] { //beberapa method tanpa body }
Membuat interface
● Sebagai contoh, mari buat sebuah interface yang
mendefinisikan hubungan antara dua object sesuai dengan pesanan dari object.
public interface Relation {
public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
Membuat interface
● Untuk menggunakan interface, kita gunakan keyword implements ● Sebagai contoh,
/**
* Class ini menjelaskan segment garis */
public class Line implements Relation { private double x1;
private double x2; private double y1; private double y2;
public Line(double x1, double x2, double y1, double y2){ this.x1 = x1;
this.x2 = x2; this.y1 = y1; this.y2 = y2; }
Membuat interface
public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length;
}
public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen);
}
public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen);
}
public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen);
} }
Membuat interface
● Ketika class Anda mencoba untuk mengimplementasikan
sebuah interface, pastikan selalu bahwa Anda
mengimplementasikan semua method dari interface
tersebut, jika tidak, Anda akan mendapatkan kesalahan ini.
Line.java:4: Line is not abstract and does not override abstract method
isGreater(java.lang.Object,java.lang.Object) in Relation public class Line implements Relation
^ 1 error
Interface vs. Abstract Class
Semua interface method tidak memiliki body
Beberapa Abstract class memiliki method dengan
implementasi
Sebuah interface hanya dapat didefinisikan constant Sebuah abstract class tampak seperti class biasa yang
dapat mendeklarasikan variabel.
Interface tidak memiliki hubungan inheritance secara
langsung dengan setiap class tertentu, mereka didefinisikan secara independen.
Interface vs. Class
Persamaan:
Interface dan class adalah sama-sama sebuah type
Hal ini berarti bahwa interface dapat digunakan di tempat dimana
sebuah class dapat digunakan
Sebagai contoh:
PersonInterface pi = new Person(); Person pc = new Person();
Perbedaan:
Anda tidak dapat membuat instance dari sebuah interface Sebagai contoh:
Interface vs. Class
● Persamaan:
− Interface dan class, keduanya dapat mendefinisikan method
● Perbedaan:
Meng-extends Class vs.
Implementasi interface
● Sebuah class hanya bisa meng-EXTENDS SATU
superclass, tetapi juga bisa meng-IMPLEMENTASIKAN BANYAK interface
● Sebagai contoh:
public class Person implements PersonInterface, LivingThing,
WhateverInterface { //beberapa kode disini
Meng-extends Class vs.
Implementasi interface
Contoh lain:
public class ComputerScienceStudent extends Student implements PersonInterface,
LivingThing { //Beberapa kode disini
Inheritance antar interface
Interface bukanlah bagian dari hirarki class,
bagaimanapun juga interface dapat memiliki hubungan inheritance antar mereka sendiri
Sebagai contoh:
public interface PersonInterface { . . .
}
public interface StudentInterface extends PersonInterface { . . .