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( ) ; }