Abstract adalah superclass mendeklarasikan struktur tanpa menyediakan implementasi yang jelas kepada setiap method. Abstract class didefinisikan sebagai class yang tidak bisa digunakan untuk membuat object. Interface adalah prototype kelas yang berisi definisi konstanta dan deklarasi method (hanya nama method tanpa definisi kode programnya).
2. Jelaskan menurut Anda apa saja perbedaan yang paling menonjol antara abstract class dan interface!
Abstract class :Method abstract tidak memiliki body method, hanya class abstract yang memiliki method abstract
Interface: Semua method adalah abstract dan public, tidak boleh ada deklarasi konstruktor
3. Jelaskan keyword-keyword berikut:
a. abstract method : method yang tidak memiliki body
b. extends : Extend adalah Relasi use case tambahan ke sebuah use case dimana use case yang ditambahkan dapat berdiri sendiri walau tanpa use case tambahan itu.
c. implements : memanggil method pada class interface.
d. override :metode utama dalam pemrograman berorientasi objek
e. public : menyatakan bahwa kelas tersebut dapat dikases oleh kelas lain
f. protected : menyatakan bahwa kelas tersebut dapat diakses oleh kelas lain yang berada dalam satu package
g. private : menyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain
h. parent class : Class yang mempunyai class turunan
i. child class : class yang menjadi turunan dari Parent Class
j. this : membedakan antara parameter yang satu dengan yang lainnya.
PENGAMATAN 1
1. Bolehkah ditambahkan body "{statement1; statement1;}" pada method getValue ataupun method prefixValue pada class abstract AbstractClass? Jelaskan! tidak karena pada class abstract tidak bisa ditambahkan body.
2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus! karena pada kelas induk terdapat getvalue tapi di ConcreteClass1 tidak ada getValue.
3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya! pada kelas ConcreteClass1 protected dapat mengakses hanya class induk saja dan kelas turunannya saja. pada class ConcreteClass2 public dapat mengakses method bisa dari manapun.
4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan mengapa terjadi error? karena pada class induk tidak ada getValue2
5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan mengapa terjadi error? karena pada main terdapat objek pada ConcreteClass1 dan pada class ConcreteClass1 bersifat abstract maka kelas tidak bisa membuat objek.
6. Dengan mengikuti struktur kode program di atas serta ditambahkan satu abstract method bernama "gabung" TANPA PARAMETER pada parent class, hasilkan output berikut:
abstract class AbstractClass
{
abstract protected String getValue();
abstract protected String prefixValue(String prefix);
abstract protected String gabung();
public void printOut() {
System.out.println( this.getValue() );
System.out.println( this.gabung());
}
}
class ConcreteClass1 extends AbstractClass
{
protected String getValue() {
return "Tengkung";
}
public String prefixValue(String prefix) {
System.out.println(" ");
return prefix + "Tengkung adalah jamur";
}
protected String gabung(){
System.out.println(" ");
return " Tengkung";
}
}
class ConcreteClass2 extends AbstractClass
{
public String getValue() {
return "whatever";
}
public String prefixValue(String prefix) {
System.out.println(" ");
return prefix + "whatever adalah terserah";
}
public String gabung(){
System.out.println(" ");
return "whatever";
}
}
class Mainn
{
public static void main(String args[]) {
ConcreteClass1 class1 = new ConcreteClass1();
class1.printOut();
System.out.println( class1.prefixValue(" ") );
System.out.println(" ");
System.out.println();
ConcreteClass2 class2 = new ConcreteClass2();
class2.printOut();
System.out.println( class2.prefixValue(" ") );
System.out.println(" ");
}
}
PENGAMATAN 2
1. Compile kode program diatas dan jelaskan sebab error yang terjadi! karena pada class mobil2 tidak mengoverride method merk yang ada di induk.
2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No. 1)!
// This will work
class Mobil1 implements Mesin
{
private String merk, nomor_mesin;
public void setMerk(String merk){
this.merk = merk;
}
public String getMerk(){
return merk;
}
public void setNoMesin(String nomor_mesin){
this.nomor_mesin = nomor_mesin;
}
public String getNoMesin(){
return nomor_mesin;
}
}
Tidak ada komentar:
Posting Komentar