CodeGym /Java Blog /Acak /Metode dan Kelas Abstrak Java
John Squirrels
Level 41
San Francisco

Metode dan Kelas Abstrak Java

Dipublikasikan di grup Acak
Metode abstrak adalah alat yang ampuh dari Java dan memberi bahasa berorientasi objek ini lebih banyak kemampuan dalam hal polimorfisme. Metode abstrak Java dapat digunakan untuk membuat kerangka kerja dasar untuk keseluruhan program dan memungkinkan Anda menyesuaikan sesuai kebutuhan.Metode Java Abstrak dan Anda - 1

Apa itu Metode Abstrak?

Metode abstrak adalah metode yang tidak memiliki implementasi. Yaitu, ia hanya memiliki sebuah deklarasi, jadi Anda tahu nama, tipe kembalian, dan variabel yang akan diterimanya. Berikut adalah contoh metode abstrak dasar:

public abstract int example(int a1, int a2);
Saat Anda melihat metode ini, Anda dapat mengetahui bahwa metode ini mengembalikan bilangan bulat dan menerima dua bilangan bulat sebagai argumennya. Yang tidak bisa Anda ceritakan adalah bagaimana metode ini diterapkan. Itu karena untuk mengimplementasikannya, Anda harus menimpanya. Saat membuat metode abstrak di java, Anda harus mematuhi beberapa pedoman atau program Anda tidak akan dapat dikompilasi dengan benar. Ingat:
  • Metode abstrak Java tidak memiliki implementasi. Artinya, mereka tidak boleh diikuti oleh kurung kurawal dan tubuh yang memberitahu bagaimana metode yang akan digunakan. Itu hanya diakhiri dengan titik koma.

  • Jika Anda membuat metode abstrak, itu hanya bisa dimasukkan ke dalam kelas abstrak. Artinya, Anda tidak dapat memiliki kelas konkret yang memiliki metode abstrak di dalamnya.
    Saya. Sebagai catatan tambahan, jika Anda memiliki kelas abstrak, itu bisa berisi konstruktor. Namun, itu tidak harus memiliki metode abstrak.

  • Ketika kelas konkret memperluas kelas abstrak, itu juga harus mengimplementasikan semua metode abstrak dari kelas induk atau tidak bisa konkret dan harus dinyatakan abstrak.

Dua yang terakhir mungkin sedikit membingungkan, jadi mari kita perjelas segera.

Memperluas Kelas Java Abstrak

Katakanlah kita ingin menulis sebuah program tentang bentuk dasar yang akan mengembalikan keliling dan luas. Jadi kami membuat kelas abstrak induk. Tetapi karena setiap bentuk memiliki aturannya masing-masing, masing-masing harus dihitung secara berbeda, jadi kami menulis kelas Bentuk abstrak seperti ini:

abstract class Shape {
  		String shapeName = " ";
  		Shape(String name) { 
    			this.shapeName = name; 
  		} 

abstract double area();
  		abstract double perimeter();
}
Sekarang, jika kita ingin benar-benar menggunakan metode abstrak ini, kita harus memperluas Shape kelas induk Java abstrak dan kemudian membuat instance metode. Jadi setiap kelas beton harus mengimplementasikan metode abstrak area dan perimeter.

class Quadrilateral extends Shape  
{ 
    double length, width; 
      
    Quadrilateral(double l, double w, String name) 
    { 
        super(name); 
        this.length = l; 
        this.width = w; 
    } 
      
    @Override
    public double perimeter()  
    { 
        return ((2*length)+(2*width));
    } 
      
    @Override
    public double area()  
    { 
        return (length*width); 
    } 
}

Implementing the Quadrilateral class would then look like this
class Main
{ 
    public static void main (String[] args)  
    { 
      
        // creating a Quadrilateral object using Shape as reference 
        Shape rectangle = new Quadrilateral(3,4, "Rectangle"); 
        System.out.println("Area of rectangle is " + rectangle.area()); 
        System.out.println("Perimeter of rectangle is " + rectangle.perimeter());
  
    } 
} 
Output dari konsol kemudian terlihat seperti ini:

Area of rectangle is 12.0
Perimeter of rectangle is 14.0
Perhatikan bahwa kelas Quadrilateral tidak harus memberi contoh konstruktor Shape(String name) dari kelas induk Shape . Itu karena ini bukan metode abstrak. Namun, jika Anda hanya mengimplementasikan area atau perimeter di kelas, kelas baru harus abstrak karena tidak menyertakan keduanya. Anda juga dapat menggunakan metode abstrak di Antarmuka.

Metode Java Abstrak dengan Antarmuka

Mari kita tinjau dengan cepat apa itu antarmuka dan perbedaannya dari kelas abstrak. Dalam sebuah antarmuka, variabel apa pun yang dideklarasikan dalam antarmuka bersifat publik, statis, dan final. Kelas abstrak di sisi lain, hanya memiliki variabel non-final. Segala sesuatu di antarmuka bersifat publik secara default. Kelas abstrak dapat memiliki private, protected, public, dll. Terakhir, kelas tidak memperluas antarmuka, melainkan mengimplementasikannya. Sebelum JDK 8, antarmuka tidak dapat memiliki apa pun di dalamnya kecuali metode abstrak. Sekarang, sebuah antarmuka dapat memiliki metode default dan statis. Karena itu, praktik terbaik telah beralih dari menggunakan metode abstrak sebagai templat yang dapat diperpanjang dan berfokus pada Antarmuka dan mengimplementasikannya. Jadi jika Anda membuat Bentuk sebagai Antarmuka dan kemudian mengimplementasikannya sebagai Segiempat, akan terlihat seperti apa? Pertama, Anda harus menyingkirkan konstruktor Shape(String name) . Ini akan terlihat seperti ini hanya dengan dua metode abstrak:

interface Shape {

  abstract double area();
  abstract double perimeter();
}


So the Quadrilateral class would then look like this:
class Quadrilateral implements Shape {  

  double length, width; 
      
    	  Quadrilateral(double l, double w) {
    
    	    this.length = l; 
    	    this.width = w; 
    	  } 
      
    	  @Override
    	  public double perimeter() {
     
    	    return ((2*length)+(2*width));
    	  } 
      
    	  @Override
    	  public double area() {
    
   	    return (length*width); 
    	  } 
}
Terakhir, menggunakan Quadrilateral baru karena mengimplementasikan antarmuka Shape akan hampir sama:

class Main
{ 
    public static void main (String[] args)  
    { 
      
        // creating a Quadrilateral object using Shape as reference 
        Shape rectangle = new Quadrilateral(3,4); 
        System.out.println("Area of rectangle is " + rectangle.area()); 
        System.out.println("Perimeter of rectangle is " + rectangle.perimeter());
  
    } 
}
Dan cetakan konsol akan terlihat seperti ini:

Area of rectangle is 12.0
Perimeter of rectangle is 14.0
Jika Anda ingin mempelajari lebih lanjut tentang perbedaan antara antarmuka dan kelas abstrak, Anda dapat menemukan informasi lebih lanjut di sini.

Tapi Mengapa Menggunakan Metode Abstrak Java?

Ada banyak alasan mengapa metode abstrak di Java digunakan dan mengapa Anda harus terbiasa menggunakannya. Berikut adalah tiga alasan cepat mengapa Anda harus menggunakannya pada saat yang tepat.
  1. Hindari duplikasi upaya – Lihat kembali contoh pengkodean kami; bayangkan Anda dan tim Anda perlu membuat kelas untuk bentuk selain persegi panjang. Berapa banyak cara berbeda yang dapat Anda buat untuk mendesain kelas itu? Sepuluh? Limabelas? Dan itu masalah sederhana. Bayangkan sesuatu yang jauh lebih kompleks. Anda dan tim Anda dapat menemukan ratusan cara. Kemudian Anda akan dihadapkan pada tugas yang menakutkan untuk menyatukannya menjadi program yang koheren. Ini membawa kita ke poin berikutnya: mendefinisikan implementasi.

  2. Metode Abstrak di Java memungkinkan definisi penggunaan dan implementasi – Saat Anda menggunakan kelas abstrak atau antarmuka, dan dengan desain, metode abstrak, Anda menentukan bagaimana orang lain akan berinteraksi dengan antarmuka Anda. Itu membuat mereka tahu variabel apa yang harus mereka gunakan dan jenis pengembalian apa yang bisa mereka harapkan.
    Meskipun mereka dapat menimpanya dan membuat kelas konkret yang mengimplementasikan antarmuka Anda dengan cara yang unik, Anda tetap menetapkan penggunaan inti untuk kode Anda. Jika seseorang ingin mengimplementasikan Shape, maka mereka harus mengganti atau mengimplementasikan perimeter dan area.

  3. Keterbacaan dan Debugging – Memiliki metode abstrak akan meningkatkan keterbacaan kode Anda. Saat Anda menulis kelas yang mengimplementasikan antarmuka, Anda tahu apa yang harus dicari. Anda tahu bahwa setiap metode abstrak di antarmuka akan diimplementasikan, dan itu membuatnya lebih mudah untuk dibaca dan melacak bug apa pun. Metode abstrak hanyalah awal dari pembelajaran bagaimana menggunakan polimorfisme dengan benar di Java dan bahasa berorientasi objek lainnya. Saat Anda mulai memahami dan menggunakannya, babak baru dalam perjalanan coding Anda akan dimulai.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION