Anda di halaman 1dari 13

Nama : Afin Humam A.

NIM : 1512617032

Matkul : Pemrograman Berbasis Object

1. Override01

/*

Overriding

Method Overriding adalah proses merubah kode method di subclass yg diturunkan dari superclass

Soal :

1. Adakan parameter method yang dioverride dapat diubah ?

2. Apakah override annotation wajib dituliskan?

3. Apa manfaat penulisan override anotation?

4. Apa perbedaa method overloading dengan method overriding?

Jawaban :

1.Tidak, karena parameter method yang di override merupakan turunan dari parent

class.

2.Tidak, karena jika tidak ditulis override annotationnya program tetap bisa berjalan,

tetapi sebaiknya ditulis.

3. Berfungsi untuk menghubungkan Superclass dan Subclass.

4.

Pada Overloading :

• Nama method sam.

• Parameter Berbeda

• Biasanya dalam satu class

Pada Overriding :

• Nama method sama

• Isi / Body method berbeda

• Biasanya berbeda class. interface dan implement

*/

package pbo;
/**

* @author USER

*/

public class Override01 {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

ParentOver01 PO01 = new ParentOver01();

ChildOver01a CO01 = new ChildOver01a();

ChildOver02b CO02 = new ChildOver02b();

Neighbour01 N01 = new Neighbour01();

PO01.printPO();

CO01.printPO();

CO02.printPO();

CO02.printPO("Over");

N01.printPO();

class ParentOver01{

public void printPO(){

System.out.println("Cetak dari Parent01");

}
class ChildOver01a extends ParentOver01{

//tanpa override annotation

public void printPO(){

System.out.println("Cetak dari Child01");

class ChildOver02b extends ParentOver01{

@Override //override annotation

public void printPO(){//method printPO() yg diturunkan dari kelas ParentOver01

//didefinisi ulang pada kelas ChildOver02b

System.out.println("Cetak dari Child02");

protected int printPO(String teks){//overloading method

System.out.println("=>Cetak dari Child02 "+teks);

return 0;

class Neighbour01 {

public void printPO(){

System.out.println("Cetak dari Neighbour01");

}
2. Override02

/*

Perubahan Access Modifier Method Overriding

Terdapat aturan perubahan access modifier pada method overriding

Soal :

1. Jika method pada superclass bersifat public, maka access modifier yang diijinkan pada

metod overriding subclass adalah ...

2. Jika method pada superclass bersifat default, maka access modifier yang diijinkan pada

metod overriding subclass adalah ...

3. Secara umum dapat dikatakan access modifier pada method subclass yg di override harus ....

dibanding access modifier pada method superclass

Jawaban :

1. Jika method pada superclass bersifat public, maka access modifier yang diijinkan pada

metod overriding subclass adalah yang memiliki sifat public juga.

2.Jika method pada superclass bersifat default, maka access modifier yang diijinkan pada

metod overriding subclass adalah yang memiliki sifat default, protected atau public.

3.Secara umum dapat dikatakan access modifier pada method subclass yg di override harus

tidak bisa lebih ketat dibanding access modifier pada method superclass.

*/

package pbo;

/**

* @author USER

*/

public class Override02 {

/**
* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

ParentOver02a PO02 = new ParentOver02a();

PO02.printPO();

ChildOver02a1 CO02a1 = new ChildOver02a1();

CO02a1.printPO();

ChildOver02b1 CO02b1 = new ChildOver02b1();

CO02b1.printPO();

ChildOver02b2 CO02b2 = new ChildOver02b2();

CO02b2.printPO();

class ParentOver02a{

public void printPO(){

System.out.println("Cetak dari Parent02a");

class ChildOver02a1 extends ParentOver02a{

@Override

public void printPO(){

System.out.println("Cetak dari ChildOver02a1");

//class ChildOver02a2 extends ParentOver02a{

// @Override //override annotation

// protected void printPO(){


// System.out.println("Cetak dari ChildOver02a2");

// }

//}

//

//class ChildOver02a3 extends ParentOver02a{

// @Override //override annotation

// private void printPO(){

// System.out.println("Cetak dari ChildOver02a3");

// }

//}

//

//class ChildOver02a4 extends ParentOver02a{

// @Override //override annotation

// void printPO(){

// System.out.println("Cetak dari ChildOver02a4");

// }

//}

class ParentOver02b{

protected void printPO(){

System.out.println("Cetak dari ParentOver02b");

class ChildOver02b1 extends ParentOver02b{

@Override

public void printPO(){

System.out.println("Cetak dari ChildOver02b1");

}
class ChildOver02b2 extends ParentOver02b{

@Override

protected void printPO(){

System.out.println("Cetak dari ChildOver02b2");

//class ChildOver02b3 extends ParentOver02b{

// @Override

// private void printPO(){

// System.out.println("Cetak dari ChildOver02b3");

// }

//}

//

//class ChildOver02d extends ParentOver02b{

// @Override //override annotation

// void printPO(){

// System.out.println("Cetak dari ChildOver02d");

// }

//}
3. Override03

/*

Static method pada kelas turunan(1)

Soal :

1. Apakah static method dapat diturunkan ?

2. Bagaimana saja cara memanggil static method yang diturunkan ke anak?

3. Apakah static method yang diturunkan dapat di override?

4. Perhatikan pada contoh nilai static atribut data, apa kesimpulan Anda?

Jawaban :

1. Bisa untuk diturunkan.

2. Dengan menambahkan static pada parameternya.

3. Tidak dapat di override

4. Pada program tersebut, nilai atribut yang ada pada superclass dapat diakses oleh

subclass dan dapat diubah juga sesuai dengan kebutuhan subclass yang dibuat.

*/

package pbo;

/**

* @author USER

*/

public class Override03{

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

ParentOver03 PO03 = new ParentOver03();

PO03.printParent();
PO03.printStaticParent01();

//ParentOver03.printParent();

ParentOver03.printStaticParent01();

ParentOver03.printStaticParent02();

ChildOver03 CO03 = new ChildOver03();

System.out.println();

CO03.printParent();

CO03.printStaticParent01();//overriden

CO03.printStaticParent02();

//ChildOver03b.printParent();

ChildOver03.printStaticParent01();

ChildOver03.printStaticParent02();

System.out.println();

ParentOver03.printStaticParent01();

ParentOver03 PO03b = new ParentOver03();

ParentOver03.printStaticParent01();

System.out.println();

CO03.printChild();

class ParentOver03{

static int data;

public ParentOver03(){

data=1;

void printParent(){

System.out.println("method in ParentOver03 " + data);

}
static void printStaticParent01(){

System.out.println("static method 01 in ParentOver03 " + data);

static void printStaticParent02(){

System.out.println("static method 02 in ParentOver03 " + data);

class ChildOver03 extends ParentOver03{

public ChildOver03(){

data=2;

@Override

void printParent(){

System.out.println("method in ChildOver03 " + data);

//@Override // apa yang terjadi jika annotation override ditambahkan/tidak dijadikan komen ?

static void printStaticParent01(){

System.out.println("static method 01 in ChildOver03 " + data );

void printChild(){

super.printStaticParent01();

this.printStaticParent01();

System.out.println(super.toString() + " " + this.toString());

}
4. Override04

/*

Static method pada kelas turunan (2)

Soal :

1. Perhatikan baik-baik contoh di atas. Beri kesimpulan perbedaan antara

method non static dan method non static jika akan di definisi ulang pada

kelas turunan !

Jawaban :

1. Pada method static dapat digunakan tanpa harus menginialisasi suatu class atau tanpa

menggunakan variable terlebih dahulu dalam pembuatannya, sedangkan method instance

dapat beroperasi pada objek untuk memanipulasi state objek melalui pesan yang diterima

oleh objek lain.

*/

package pbo;

/**

* @author USER

*/

public class Override04 {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

ChildOver04 CO04 = new ChildOver04();

CO04.printNonStatic01();

CO04.printNonStatic02();
System.out.println();

CO04.printStatic01();

CO04.printStatic02();

System.out.println();

ParentOver04.printStatic01();

ParentOver04.printStatic02();

//bagian ini dapat dibahas lanjut setelah pembahasan polymorphism

System.out.println();

ParentOver04 PO04a = new ParentOver04();

PO04a.printStatic01();

PO04a = new ChildOver04(); //bentuk polymorphism, objek parent

//berubah bentuk menjadi objek child

PO04a.printStatic01();

PO04a.printStatic02();

PO04a.printNonStatic02();

class ParentOver04{

void printNonStatic01(){

System.out.println("Non Static print 01 in ParentOver04");

printNonStatic02();

void printNonStatic02(){

System.out.println("Non Static print 02 in ParentOver04");

static void printStatic01(){

System.out.println("Static print 01 in ParentOver04");


printStatic02();

static void printStatic02(){

System.out.println("Static print 02 in ParentOver04");

class ChildOver04 extends ParentOver04{

@Override

void printNonStatic02(){

System.out.println("Non Static print 02 in ChildOver04");

static void printStatic02(){

System.out.println("Static print 02 in ChildOver04");

Anda mungkin juga menyukai