A bstract Method

9.4.2 A bstract Method

Di dala m sebuah abstract class . Kita dapat membuat abstract method. Abstract method adalah method yang tidak ada implementasinya. Implementasi dari method semacam ini dilakuk an di concrete class yang derive d dari abstract class tersebut. Jika anda membuat implementas i code dari sebuah abstract method, maka pr ogram anda akan error.

Contoh :

publ i c abs t r ac t c l as s Bas e {

publ i c abs t r ac t s t r i ng Nama( ) { // i nv al i d

// c ode s -> // i nv al i d } // i nv al id

Anda s eharusnya menulis seperti ini:

publ i c abs t r ac t c l as s Bas e {

publ i c abs t r ac t s t r i ng Nama( ) ; }

Perlu d itekankan disini bahwa hanya class abstract saja ya ng dapat memiliki abstract method . Sebuah c oncrete class tidak bisa mempuny ai abstract method. Contoh code berikut adalah invalid:

publ i c c l as s Bas e {

publ i c abs t r ac t s t r i ng Nama( ) ; / / i nv al i d }

Secara implisit, sebuah method abstract adalah juga method virtual. Tetapi anda tidak dapat melakukan secara eksplisit seperti contoh code berikut:

pub l i c abs t r ac t c l as s Bas e {

publ i c v i r t ual abs t r ac t s t r i ng Na ma( ) ; / / i nv al i d

Sepert i dijelaskan diatas, karena secara implisit sebu ah abstract method adalah virtual method , maka contoh code berikut adala h valid, anda dapat meng-override abstract method :

publ i c abs t r ac t c l as s Bas e {

publ i c abs t r ac t s t r i ng Na ma( ) ; }

publ i c c l as s Der i v ed: Bas e {

publ i c ov er r i de s t r i ng Nama( ) { // c odes }

Selanjutnya, sebuah method abstract dapat meng-override method virtual dari suatu base c lass. Contoh:

publ i c c l as s Bas e {

publ i c v i r t ual s t r i ng N ama( ) { // Codes } }

publ i c abs t r ac t c l as s Der i v ed: Bas e

{ publ i c abs t r ac t ov er r i de s t r i ng Nama( ) ; }

Terakh ir, sebuah abstract method dapat meng-override sebuah override meth od. Contoh :

publ i c c l as s Bas e {

publ i c v i r t ual s t r i ng Nama( ) { // Codes } }

publ i c c l as s Der i v

ed: Bas e

{ publ i c ov e r r i de s t r i ng Nama( ) { // c od es } }

publ i c abs t r ac t c l as s Fur t her Der i v ed: Der i v ed {

pub l i c abs t r ac t ov er r i de s t r i ng Nama( ) ; }