java
Sesuai kamus, abstraksi adalah kualitas berurusan dengan ide-ide daripada peristiwa. Misalnya, ketika Anda mempertimbangkan kasus email, detail rumit seperti apa yang terjadi segera setelah Anda mengirim email, protokol yang digunakan server email Anda disembunyikan dari pengguna. Oleh karena itu, untuk mengirim email Anda hanya perlu mengetikkan konten, menyebutkan alamat penerima, dan klik kirim.
Demikian juga dalam pemrograman berorientasi objek, abstraksi adalah proses menyembunyikan detail implementasi dari pengguna, hanya fungsionalitas yang akan diberikan kepada pengguna. Dengan kata lain, pengguna akan memiliki informasi tentang apa yang dilakukan objek daripada bagaimana melakukannya.
Di Java, abstraksi dicapai dengan menggunakan kelas dan antarmuka Abstrak.
Kelas yang berisi abstrak kata kunci dalam deklarasinya dikenal sebagai kelas abstrak.
Kelas abstrak mungkin atau mungkin tidak berisi metode abstrak , yaitu, metode tanpa isi ( public void get(); )
Tetapi, jika sebuah kelas memiliki setidaknya satu metode abstrak, maka kelas tersebut harus dinyatakan abstrak.
Jika sebuah kelas dideklarasikan abstrak, kelas tersebut tidak dapat diinstansiasi.
Untuk menggunakan kelas abstrak, Anda harus mewarisinya dari kelas lain, memberikan implementasi ke metode abstrak di dalamnya.
Jika Anda mewarisi kelas abstrak, Anda harus menyediakan implementasi untuk semua metode abstrak di dalamnya.
Bagian ini memberi Anda contoh kelas abstrak. Untuk membuat kelas abstrak, cukup gunakan abstrak kata kunci sebelum kata kunci kelas, dalam deklarasi kelas.
/* File name : Employee.java */ public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String address, int number) { System.out.println("Constructing an Employee"); this.name = name; this.address = address; this.number = number; } public double computePay() { System.out.println("Inside Employee computePay"); return 0.0; } public void mailCheck() { System.out.println("Mailing a check to " + this.name + " " + this.address); } public String toString() { return name + " " + address + " " + number; } public String getName() { return name; } public String getAddress() { return address; } public void setAddress(String newAddress) { address = newAddress; } public int getNumber() { return number; } }
Anda dapat mengamati bahwa kecuali metode abstrak, kelas Karyawan sama dengan kelas normal di Jawa. Kelas sekarang abstrak, tetapi masih memiliki tiga bidang, tujuh metode, dan satu konstruktor.
Sekarang Anda dapat mencoba membuat instance kelas Karyawan dengan cara berikut −
/* File name : AbstractDemo.java */ public class AbstractDemo { public static void main(String [] args) { /* Following is not allowed and would raise error */ Employee e = new Employee("George W.", "Houston, TX", 43); System.out.println("\n Call mailCheck using Employee reference--"); e.mailCheck(); } }
Saat Anda mengkompilasi kelas di atas, itu memberi Anda kesalahan berikut
Employee.java:46: Employee is abstract; cannot be instantiated Employee e = new Employee("George W.", "Houston, TX", 43); ^ 1 error
Kita dapat mewarisi properti dari kelas Karyawan seperti kelas beton dengan cara berikut −
/* File name : Salary.java */ public class Salary extends Employee { private double salary; // Annual salary public Salary(String name, String address, int number, double salary) { super(name, address, number); setSalary(salary); } public void mailCheck() { System.out.println("Within mailCheck of Salary class "); System.out.println("Mailing check to " + getName() + " with salary " + salary); } public double getSalary() { return salary; } public void setSalary(double newSalary) { if(newSalary >= 0.0) { salary = newSalary; } } public double computePay() { System.out.println("Computing salary pay for " + getName()); return salary/52; } }
Di sini, Anda tidak dapat membuat instance kelas Karyawan, tetapi Anda dapat membuat instance Kelas Gaji, dan menggunakan instance ini Anda dapat mengakses ketiga bidang dan tujuh metode kelas Karyawan seperti yang ditunjukkan di bawah ini.
/* File name : AbstractDemo.java */ public class AbstractDemo { public static void main(String [] args) { Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00); Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00); System.out.println("Call mailCheck using Salary reference --"); s.mailCheck(); System.out.println("\n Call mailCheck using Employee reference--"); e.mailCheck(); } }
Ini menghasilkan hasil berikut
Constructing an Employee Constructing an Employee Call mailCheck using Salary reference -- Within mailCheck of Salary class Mailing check to Mohd Mohtashim with salary 3600.0 Call mailCheck using Employee reference-- Within mailCheck of Salary class Mailing check to John Adams with salary 2400.0
Jika Anda ingin kelas berisi metode tertentu tetapi Anda ingin implementasi aktual metode tersebut ditentukan oleh kelas turunan, Anda dapat mendeklarasikan metode di kelas induk sebagai abstrak.
abstrak kata kunci digunakan untuk mendeklarasikan metode sebagai abstrak.
Anda harus menempatkan abstrak kata kunci sebelum nama metode dalam deklarasi metode.
Metode abstrak berisi tanda tangan metode, tetapi tidak ada isi metode.
Alih-alih kurung kurawal, metode abstrak akan memiliki titik dua semoi (;) di akhir.
Berikut adalah contoh metode abstrak.
public abstract class Employee { private String name; private String address; private int number; public abstract double computePay(); // Remainder of class definition }
Mendeklarasikan metode sebagai abstrak memiliki dua konsekuensi −
Kelas yang memuatnya harus dideklarasikan sebagai abstrak.
Setiap kelas yang mewarisi kelas saat ini harus menimpa metode abstrak atau mendeklarasikan dirinya sebagai abstrak.
Catatan Akhirnya, kelas turunan harus mengimplementasikan metode abstrak; jika tidak, Anda akan memiliki hierarki kelas abstrak yang tidak dapat dipakai.
Misalkan kelas Gaji mewarisi kelas Karyawan, maka harus mengimplementasikan computePay() metode seperti yang ditunjukkan di bawah ini
/* File name : Salary.java */ public class Salary extends Employee { private double salary; // Annual salary public double computePay() { System.out.println("Computing salary pay for " + getName()); return salary/52; } // Remainder of class definition }
java
Kelas Java PrintStream Dalam tutorial ini, kita akan belajar tentang kelas Java PrintStream dan metode print() dan printf() dengan bantuan contoh. PrintStream kelas java.io package dapat digunakan untuk menulis data keluaran dalam bentuk (teks) yang dapat dibaca secara umum alih-alih byte. Ini mem
Kelas Pembaca Java Dalam tutorial ini, kita akan belajar tentang Java Reader, subclass-nya dan metodenya dengan bantuan sebuah contoh. Reader kelas java.io package adalah superclass abstrak yang mewakili aliran karakter. Sejak Reader adalah kelas abstrak, itu tidak berguna dengan sendirinya. Namun
Apa itu Abstraksi di OOP? Abstraksi adalah konsep pemrograman berorientasi objek yang menampilkan hanya atribut penting dan menyembunyikan informasi yang tidak perlu. Tujuan utama abstraksi adalah menyembunyikan detail yang tidak perlu dari pengguna. Abstraksi adalah memilih data dari kumpulan yang
Apa itu Abstraksi di Java? Abstraksi dalam JAVA hanya menampilkan atribut penting dan menyembunyikan detail objek yang tidak perlu dari pengguna. Di Java, abstraksi dilakukan dengan menggunakan kelas Abstrak, metode Abstrak, dan Antarmuka. Abstraksi membantu mengurangi kerumitan dan upaya pemrogram