Tugas Programan Java

2. ABSTRACTION

Abstraction merupakan sebuah model, atau ideal. Tidak perlu memiliki semua detail dari sesuatu, namun memiliki parmeter-parameter yang sifatnya umum yang nantinya akan bisadiisi dengan detail-detail tertentu nantinya.

Abstract Class Dalam Java Abstract class dalam java digunakan untuk mendeklarasikan karakteristik umum dari subclass. Abstract class tidak bisa diinstansiasi sama halnya dengan kelas interface. abstract class hanya bisa digunakan sebagai super class, tapi juga bisa diturunkan dari class abstract lainnya. Untuk mendeklarasikan sebuah abstract class digunakan keyword abstract, [abstract] class [class_name] Sebuah abstract class pada dasarnya tidak hauh beda dengan class lainnya, yakni juga berisi method yang menggambarkan carakteristik dari kelas abstract tersebut, bedanya yakni sebuah abstract class bisa berisi method tanpa diimplementasikan artinya sebuah method tanpa body, methid seperti ini disebut method abstract. untuk pendeklarasiannya digunakan keyword abstract: [abstract] modifier class [class_name] berikut contoh program yang menggunakan class abstract.

3. ENCAPSULATION

Enkapsulasi secara definisi adalah mekanisme pembungkusan untuk menyembunyikan atau melindungi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem juga sekaligus menyederhanakan penggunaan system itu sendiri. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface/antarmuka. Contohnya Komputer, pada saat  menyalakan, mematikan, pembacaan data, pemrosesan data maka pemakai/user  tidak perlu tahu detail dari bagaimana proses menyalakan dan mematikan, itu dilakukan oleh komputer, cukup tahu bagaimana cara menyalakan/mematikan komputer , keyboard, mouse, tombol power merupakan interface (antar muka) pemakai dengan sistem komputer tersebut. Jika kita telah melakukan information hiding terhadap suatu attribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap attribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu attribut tersebut.

Berikut ini keuntungan dari prinsip encapsulation :

  • Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari yang lain. Sehingga dapat digunakan pada bagian manapun dari program.
  • Bersifat transparan. Jika Anda melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan oleh semua bagian yang menggunakan modul tersebut.
  • Menghindari dari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian program melalui variable input dan output yang telah didefinisikan sebelumnya. Sehingga dapat mengurangi kemungkinan bug.

Kesimpulan :

Tujuan encapsulation adalah untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interfensi atau penyalahgunaan dari luar system dan sekaligus menyederhanakan system itu sendiri

Contoh :
Person.java
public class Person {
private int age;
private String name;
private String personId;
public void setAge(int newValue)
{
age = newValue;
}
public void setName( String newValue)
{
name = newValue;
}
public void setPersonId(String newValue)
{
personId = newValue;
}
public int getAge()
{
return age;
}
public String getName()
{
return name;
}
public String getPersonId()
{
return personId;
}
}
Main.java
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Person ren = new Person();
ren.setAge(22);
ren.setName(“Ren A”);
ren.setPersonId(“113060002″);
System.out.println(“My name is” +ren.getName() +” My age :”+ ren.getAge() +”and My Id”+ren.getPersonId());
}
}

4. INHERITANCE
Pewarisan atau inheritance..adalah sebuah kelas mewarisi state dan behaviour dari kelas lain. Contohnya kelas komputerLapotop akan mewarisi state dan behaviour dari kelas komputer. Demikian juga dengan kelas komputerNetbook. Kelas komputerLaptop dan kelas komputerNetbook disebut subkelas, atau kelas anak, dari kelas komputer , yang disebut superkelas,atau kelas Induk.

Kegunaan  konsep pewarisan antara lain :

  • Dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada.

Dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.

Hal ini berguna jika kita ingin membuat prototype/template kelas. Kelas semacam ini disebut kelas abstraksi, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret/nyata, mengimplementasikan behaviour abstrak tersebut sesuai dengan kegunaan masing-masing.

Tujuan Inheritance:

¨ Specialization: object baru memiliki data dan method yang berbeda dari superclassnya (Top Down)

¨ Overriding: method yang diturunkan bias dideklarasikan ulang

¨ Code Reuse: method dari superclass bias langsung digunakan di subclass

Contoh program :
import java.io.*;
public class Mamalia {
void KelasMamalia () {
System.out.println(“Ciri umum mamalia adalah bernapas dengan paru-paru, ” +
“berkembang biak dengan cara beranak”);
}}class Paus extends Mamalia {
String x = “Ikan Paus”;
void TampilkanPaus () {
System.out.println(“dan Mamalia yang Anda pilih adalah “+ x );
System.out.println(“Mamalia ini berada di laut”);
System.out.println(“Paus termasuk jenis mamalia terbesar”);
}}class Cheetah extends Mamalia {
String x = “Cheetah”;
void TampilkanCheetah () {
System.out.println(“dan Mamalia yang Anda pilih adalah “+ x );
System.out.println(“Mamalia ini berada di darat”);
System.out.println(“Cheetah termasuk mamalia pelari tercepat di darat”);
}}class Sapi extends Mamalia {
String x = “Sapi”;
void TampilkanSapi () {
System.out.println(“dan Mamalia yang Anda pilih adalah “+ x );
System.out.println(“Mamalia ini berada di darat”);
System.out.println(“Sapi termasuk jenis mamalia pemamahbiak”);
}}class Turunan {
public static void main(String[] args) throws IOException{
String sInput = null ;
System.out.println(“____JENIS MAMALIA____”);
System.out.println(“[1]. IKAN PAUS”);
System.out.println(“[2]. CHEETAH”);
System.out.println(“[3]. SAPI”);
System.out.print(“Masukkan pilihan [1..3] :”);
Mamalia generalx = new Mamalia();
Paus turunan1 = new Paus();
Cheetah turunan2 = new Cheetah();
Sapi turunan3 = new Sapi ();
Sapi subxc = new Sapi();
InputStreamReader inputan = new InputStreamReader(System.in);
BufferedReader jm = new BufferedReader(inputan);
sInput = jm.readLine();
int i = Integer.parseInt(sInput);
switch (i) {
case 1 :
generalx.KelasMamalia ();
turunan1.TampilkanPaus ();break;
case 2 :
generalx.KelasMamalia ();
turunan2.TampilkanCheetah ();break;
case 3 :
generalx.KelasMamalia ();
turunan3.TampilkanSapi ();break;
default:
System.out.println(“Pilihan yang Anda masukkan salah!!”);break;
}
}
}

5. POLYMORPHISM

Polymorphism  sebuah kata dari bahasa Yunani yang mempunyai arti banyak bentuk., konsep ini  dimungkinkan untuk menggunakan suatu interface yang sama agar suatu objek melakukan aksi atau tindakan yang mungkin secara prinsip sama tapi secara proses bisa berbeda-beda. Pada umumnya konsep ini sering kali disebut dalam istilah satu interface banyak aksi. Contoh yang nyata adalah. komputer yang ada dipasaran terdiri atas berbagai tipe dan merk, namun semuanya memiliki interface yang sama, seperti: tombol power,  keyboard, mouse,  monitor dlsb,. Jika seseorang dapat mengoperasikan komputer satu jenis saja dari merk tertentu, maka orang itu akan dapat mengoperasikan hampir seluruh jenis komputer yang ada, karena semua komputer tersebut menggunakan interface yang sama. Perlu diketahui disini ahwa interface yang sama tidak berarti cara kerjanya juga sama. Misal kecepatan/speed komputer, kapasitas memory penyimpan, jika dibandingkan komputer 1 dan komputer 2 maka kecepatan komputer  berbeda.

public abstract class Shape {private double area;

public abstract double getArea;

}

Public class Circle extends Shape {

double radius;

public Circle(double r) {

radius = r;

}

public double getArea() {

area = 3.14*(radius*radius) ;
return (area);

}

}

public class Rectangle extends Shape{

double length;

double width;

public Rectangle(double l, double w) {

length = l;

width = w;

}

Public double getArea () {

area = length*width;
return (area);
}
}

7. KONSEP INTERFACE

• Interface dapat dianggap sebagai suatu kontrak tentang apa yang dapat dilakukan oleh suatu kelas, tanpa menyebutkan bagaimana kelas akan melakukannya. [1&2]
• Interface dapat dianggap sebagai 100% abstract class. Akan tetapi, bila abstract class dapat memiliki method abstract dan method non-abstract, maka interface hanya dapat memiliki methodabstract saja. [1&2]
• Suatu interface dapat diimplementasikan oleh setiap kelas, tanpa memandang pohon inheritance dari kelas tersebut. [2]

1. DEKLARASI INTERFACE
1.1 Syarat-syarat deklarasi interface
• Sintak deklarasi interface adalah sebagai berikut : [1&2]

AccessModifier [abstract] interface NamaInterface extends A, B, C
{
//……
}

• Suatu interface pasti abstract, oleh karena itu, keyword abstract dalam sintaks di atas adalah optional.[1&2]
Contoh : 2 deklarasi interface dibawah ini memiliki arti yang sama [1]

1 interface MyInterface
2 abstract interface MyInterface

• Suatu interface boleh meng-extends satu atau lebih interface yang lain. [2]
Contoh : [1]

interface A
{
public abstract void namaMethodSama();
public abstract void haha();
}

interface B
{
public abstract void namaMethodSama();
public abstract void hihi();
}

interface C extends A, B
{
public abstract void huhu();
}

• Suatu interface tidak dapat meng-extends selain interface. [2]
Contoh : [1]

class A {}

interface Z extends A {}

Bila dicompile, program di atas akan menghasilkan :
E:\Data\Data NetBeans\Belajar SCJP\src\myInterface\MyInterface04.java:5: interface expected here
interface Z extends A {}
1 error

• Suatu interface tidak dapat meng-implements interface atau class yang lain. [2]
Contoh : [1]
Program 03

interface A {}

//Error !!!
interface B implements A {}

• Kesimpulan perbedaan extends dan implements pada class dan interface : [1]
extends implements
class Hanya dapat meng-extendssatu buah superclass secara langsung.
Dapat meng-implements nol atau lebih dari nol buahinterface.
interface Dapat meng-extends nol atau lebih dari nol buahinterface.
Tidak dapat meng-implementapapun.

1.2 Syarat-syarat deklarasi method dalam interface
• Method-method yang dideklarasikan di dalam interface tidak memiliki badan method, langsung diikuti oleh titik koma. [1]
Contoh : [1]
Program 04

interface A
{
void myMethod();
String yourMethod();
int outMethod();
}

• Setiap method yang dideklarasikan di dalam interface pasti secara implisit memiliki dua modifier berikut : [2]
1. public
2. abstract
Dengan kata lain, setiap method pasti bermodifier public dan abstract, baik kita berikan kedua modifier tersebut saat deklarasi method atau tidak. [1&2]
Contoh : lima deklarasi method di dalam interface berikut memiliki arti yang sama [1]

1

public abstract void myMethod();

2

Abstract public void myMethod();

3

abstract void myMethod();

4

public void myMethod();

5

void myMethod();

• Method di dalam interface tidak boleh memiliki modifier-modifier berikut :
1. static
2. final
3. strictfp
4. native
Contoh : [1]
Program 05

interface Z
{
static void A();
final void B();
strictfp void C();
native void D();
}

Bila dicompile, maka akan mengeluarkan error-error sebagai berikut :
E:\Data\Data NetBeans\Belajar SCJP\src\myInterface\MyInterface06.java:5:modifier static not allowed here
static void A();
E:\Data\Data NetBeans\Belajar SCJP\src\myInterface\MyInterface06.java:6:modifier final not allowed here
final void B();
E:\Data\Data NetBeans\Belajar SCJP\src\myInterface\MyInterface06.java:7:modifier strictfp not allowed here
strictfp void C();
E:\Data\Data NetBeans\Belajar SCJP\src\myInterface\MyInterface06.java:8:modifier native not allowed here
native void D();
4 errors

1.3 Syarat-syarat deklarasi variabel dalam interface
• Setiap variabel yang dideklarasikan di dalam interface pasti secara implisit memiliki tiga modifier berikut : [2]
1. public
2. static
3. final
Dengan kata lain, setiap variabel pasti bermodifier public, static dan final, baik kita berikan ketiga modifier tersebut saat deklarasi variabel atau tidak. [1&2]
Contoh : lima deklarasi variabel di dalam interface berikut memiliki arti yang sama [1]

1

Int i = 10;

2

Public int i = 10;

3

Static int i = 10;

4

Final int i = 10;

5

Public static int i = 10;

6

Public final int i = 10;

7

Static final int i = 10;

8

Public static final int i = 10;

9

Static final public int i = 10;

10

Final static public int i = 10;
2. IMPLEMENTASI INTERFACE
• Ketika kita meng-implements interface, maka kita setuju untuk menyediakan implementasi dari setiap method yang didefinisikan di interface. [1&2]
• Bila suatu class hendak meng-implements suatu interface, maka sintaks deklarasi kelas tersebut menjadi sbb : [1]

Modifier class NamaKelas implements interface1, interface2,…
{
//………
}

Contoh : [1]
Program 06

interface A
{
void methodDiA();
}

interface B
{
void methodDiB();
}

interface C extends B
{
void methodDiC();
}

class MyImplementation01 implements A, C
{
public void methodDiA()
{
System.out.println(“Implementasi dari A.methodDiA()”);
}

public void methodDiB()
{
System.out.println(“Implementasi dari B.methodDiB()”);
}

public void methodDiC()
{
System.out.println(“Implementasi dari C.methodDiC()”);
}

public static void main(String[] args)
{
MyImplementation01 myI = new MyImplementation01();
myI.methodDiA();
myI.methodDiB();
myI.methodDiC();
}
}

Program di atas akan menghasilkan :
Implementasi dari A.methodDiA()
Implementasi dari B.methodDiB()
Implementasi dari C.methodDiC()

• Suatu interface dapat di-implements oleh :
1. abstract class
2. non-abstract class.

• Bila kelas yang meng-implements suatu interface adalah non-abstract class, maka harus memenuhi syarat-syarat sebagai berikut : [2]
1. Menyediakan semua implementasi dari semua method yang ada di interface tersebut.
2. Mengikuti semua peraturan tentang override method.

• Peraturan tentang override yang harus diikuti adalah : [1]
1. Harus beraccess modifier public
2. Return type adalah harus compatible (dengan yang ada di interface)
3. Checked exception yang dilempar harus tidak lebih luas dan tidak baru (dengan yang ada di interface)
Contoh : [1]
Program 07

class A {}
class B extends A {}
class ExceptionC extends Exception {}
class ExceptionD extends ExceptionC {}

interface X
{
A myMethod() throws ExceptionC;
void myOtherMethod() throws ExceptionD;
}

class MyImplementation03 implements X
{
//Meski method di bawah ini berbeda dalam return type
//dan exception yang dilempar dari yang ada di interface,
//akan tetapi method di bawah ini tetap implementasi dari
//method yang ada di interface.

public B myMethod() throws ExceptionD
{
System.out.println(“Implementasi dari X.myMethod()”);
return new B();
}

//Implementasi method di bawah ini tanpa melemparkan exception
//(BOLEH !!!)
public void myOtherMethod()
{
System.out.println(“Implementasi dari X.myOtherMethod()”);
}

public static void main(String[] args)
{
MyImplementation03 myI = new MyImplementation03();

try
{
myI.myMethod();
}
catch(ExceptionD eD) {}

//Tanpa try-catch, padahal di interface dinyatakan melempar
//exception (BOLEH)
myI.myOtherMethod();
}

}

Program di atas akan menghasilkan :
Implementasi dari X.myMethod()
Implementasi dari X.myOtherMethod()

• Bila kelas yang meng-implements interface adalah abstract class, maka dapat tidak menyediakan implementasi dari semua method yang ada di interface, akan tetapi method-method yang diimplementasikan tetap harus mengikuti semua peraturan tentang override method. [1&2]
Non-abstract class pertama dari pohon inheritance dari abstract class yang meng-implements harus menyediakan semua implementasi dari interface yang di-implement oleh abstract class tersebut. Bila ternyata interface yang diimplement meng-extends interface lain, maka method-method di interface lain itu juga harus diimplementasikan oleh non-abstract class.
Contoh : [1]
Program 08

interface A
{
void x();
}

interface B extends A
{
void y();
void z();
}

abstract class K implements B
{
public void y()
{
System.out.println(“Implementasi dari B.y()”);
}
}

class MyImplementation02 extends K
{
public void x()
{
System.out.println(“Implementasi dari A.x()”);
}

public void z()
{
System.out.println(“Implementasi dari B.z()”);
}

public static void main(String[] args)
{
MyImplementation02 myI = new MyImplementation02();
myI.x();
myI.y();
myI.z();
}
}

Program di atas akan menghasilkan :
Implementasi dari A.x()
Implementasi dari B.y()
Implementasi dari B.z()

1. CLASS DAN OBJECT

a. Intanstiasi objek adalah sebuah istilah yang mempunyai arti perwujudan,umumnya istilah ini digunakan untuk objek” yang menginisiasi dari sebuah class, sedangkan sebuah class dapat mempunyai banyak object.
Untuk dapat membuat sebuah objek, kita perlu melakukan instansiasi
Class bukanlah sebuah objek. Class digunakan untuk membangun sebuah objek dan mendefinisikan atribut dan perilaku obyek yang dibuatnya.
Contoh instansiasi objek
import net.rim.device.api.ui.component.ListField;
import net.rim.device.api.ui.container.MainScreen;
public class ListFieldSampleScreen extends MainScreen {
ListFieldSampleScreen() {
setTitle(“List Field Sample”);
ListField listField = new ListField();
ListCallback myCallback = new ListCallback();
listField.setCallback(myCallback);
add(listField);
myCallback.add(listField, “Apples”);
myCallback.add(listField, “Oranges”);
myCallback.add(listField, “Bananas”);
myCallback.add(listField, “Peaches”);
}
}

b. Konstruktor adalah bagian dari definisi suatu kelas yang berfungsi menciptakan instans dari kelas tersebut. Konstruktor ini bisa kita buat sendiri, atau bila kita tidak mendefinisikannya, maka kompiler Java akan membuatkan konstruktor default untuk kelas tersebut pada saat kompilasi. Yang perlu diperhatikan adalah bahwa suatu konstrukor tidak termasuk anggota suatu kelas seperti metode dan variabel dan bahwa konstruktor bisa dibuat lebih dari satu.
Bentuk konstruktor sendiri mirip dengan sebuah metode. Beda yang paling mencolok adalah nama sebuah konstruktor harus sama dengan nama kelas tersebut dan konstruktor tidak memiliki definisi return type seperti sebuah metode. Untuk jelasnya Anda bisa lihat kembali Listing 1, di mana terdapat dua buah konstruktor. Yang satu adalah konstruktor default dan yang lain adalah konstruktor dengan sebuah parameter bertipe int.

Contoh:
1.SuatuKelas kelasContoh = new SuatuKelas();

2.SuatuKelasLain kelasContoh2 = new SuatuKelasLain(“judul”);

3.BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));

4.new SuatuKelas().sebuahMetode();

Penjelasan coding
ada contoh pertama, kita menciptakan sebuah instans dari kelas SuatuKelas dengan memanggil konstruktor tanpa parameter. Bila dalam pendefinisian kelas SuatuKelas sebenarnya tidak ada pendefinisian konstruktor, perintah seperti ini tetap dapat dipakai, karena kompiler Java akan menyisipkan secara otomatis kosntruktor default bila tidak ada definisi konstruktor dalam sebuah kelas. Konstruktor default sendiri sebenarnya tidak melakukan apa-apa dalam proses instansiasi objek, karena tidak berisi perintah apapun.
Pada contoh kedua, kita memanggil sebuah konstruktor yang mengandung argumen berupa sebuah parameter bertipe String. Konstruktor seperti ini menjadi sangat berguna bila dalam proses instansiasi sebuah objek kita ingin memasukkan suatu nilai untuk dapat digunakan oleh instans baru tersebut.
Pada contoh ketiga, kita memanggil konstruktor dengan argumen sebuah parameter bertipe InputStreamReader. Yang menarik dari contoh ini adalah kita memasukkan argumen berupa kelas baru yang anonim sehingga terjadi pemanggilan konstruktor lain di dalam argumen konstruktor semula. Dalam konstruktor yang terakhir kita juga memasukkan argumen berupa sebuah objek InputStream yaitu System.in.
Contoh keempat adalah contoh yang lebih jelas mengenai kelas anonim. Pada contoh ini kita menciptakan sebuah instans dari kelas SuatuKelas namun tidak menyimpan referensi ke instans tersebut, sehingga kita hanya bisa menggunakannya sekali, yaitu langsung pada baris tersebut seperti terlihat pada contoh.

c. Atribut dan method. Dalam konsep pemrograman berorientasi objek, hal yang pertama harus dipahami adalah konsep class dan objek. Class dalam pemrograman berorientasi object berarti kumpulan objek yang mempunyai data dan fungsi yang sama dan object adalah sesuatu yang mempunyai data dan fungsi untuk tujuan tertentu. Sebuah class akan selalu mempunyai data (attribut) dan fungsi (method). Contoh Sebuah class misalnya class orang. Atribut class orang adalah warnabaju,rambut, kulit, kaki, mata. Sedangkan method atau behaviornya misalnya jalan, lari, belok, manjat, makan dan minum.
jika program mahasiswa kita implementasikan dalam java, maka kita bisa membuat dua buah class, yaitu class Mahasiswa dan class MahasiswaBeraksi. Class Mahasiswa adalah class yang merepresentasikan mahasiswa, karena itu dalam class mahasiswa berikan tiga atribut misalnya nim, nama dan jurusan
public class Mahasiswa{
String nim;
String nama;
String jurusan;

public void tampilInfo(){
System.out.println(“Nim mahasiswa “+nim);
System.out.println(“Nama mahasiswa “+nama);
System.out.println(“Jurusan mahasiswa “+jurusan);
}

public void ikutUjian(){
System.out.println(“Mahasiswa ini sedang ikut ujian”);
}
}

Dan berikut ini adalah class MahasiswaBeraksi. Pada class ini terdapat method main. Method main adalah method yang memungkinkan sebuah class java bisa di run atau dijalankan. Dalam class MahsiswaBeraksi, buat sebuah object dari class Mahasiswa. Misalnya nama objectnya adalah agus. Isi masing-masing variabel dalam object agus dengan data. Kemudian panggil masing-masnig method (function)nya.

public class MahasiswaBeraksi{

public static void main(String[]args){
Mahasiswa agus = new Mahasiswa();
agus.nim=”43A8700120″;
agus.nama=”Agus”;
agus.jurusan=”Teknik Informatika”;

agus.tampilInfo();
agus.ikutUjian();
}

}

6. ABSTRACT CLASS

Class Abstrak tidak berbeda dengan class – class lainnya yaitu memiliki class members (method dan variabel). Sebuah class adalah abstrak jika salah satu methodnya dideklarasikan abstrak. Method abstrak adalah method yang tidak memiliki implementasi. Contoh deklarasi method abstrak:
abstract public void cetak();
Beberapa hal yang perlu diperhatikan adalah sebagai berikut:
1. Class abstrak tidak dapat dibuatkan instan atau objeknya menggunakan keyword new.
2. Sebuah class dapat dideklarasikan sebagai class abstrak walaupun tidak memiliki method abstrak.
3. Variabel dengan tipe class abstrak tetap bisa diciptakan, tetapi harus refer ke subclass dari class abtrak tersebut yang tentunya tidak abstrak.
Perhatikan contoh class abstrak di bawah ini.

abstrak public class Mobil {
public void injakPedalGas();
public void injakRem(){
System.out.println(“Mobil berhenti!”);
}
}
public class Kijang extends Mobil{
public void injakPedalGas(){
System.out.println(“Mobil Melaju dengan kecepatan 80 Km/jam…”);
}
}
public class BMW extends Mobil {
public void injakPedalGas(){
System.out.println(“Mobil Melaju dengan kecepatan 100 Km/jam…”);
}
}

Objek class abtrak tidak dapat diciptakan menggunakan keyword new secara langsung. Apabila kita terpaksa ingin menciptakan object class abtrak tanpa membuat subclass kongkritnya, maka kita harus mengimplementasikan method – method abstraknya secara langsung saat deklarasi. Perhatikan contoh di bawah ini.

public class TestMobil {
public static void main(String[] args){
Mobil mobil = new Mobil(){
public void injakPedalGas(){
System.out.println(“Mobil berjalan…”);
}
};

Kijang kijang = new Kijang();
Escudo escudo = new Escudo();
BMW bmw = new BMW();

mobil.injakPedalGas();

mobil = kijang;
mobil.injakPedalGas();

mobil = escudo;
mobil.injakPedalGas();

mobil = bmw;
mobil.injakPedalGas();
}
}

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