Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java - Abstraksi

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 Abstrak

Kelas yang berisi abstrak kata kunci dalam deklarasinya dikenal sebagai kelas abstrak.

Contoh

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

Mewarisi Kelas Abstrak

Kita dapat mewarisi properti dari kelas Karyawan seperti kelas beton dengan cara berikut −

Contoh

/* 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

Keluaran

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

Metode Abstrak

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.

Berikut adalah contoh metode abstrak.

Contoh

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 −

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

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Kelas Abstrak Java dan Metode Abstrak
  4. Kelas Statis Bersarang Java
  5. Kelas Anonim Java
  6. Kelas Tunggal Jawa
  7. Refleksi Jawa
  8. Kelas Java ObjectOutputStream
  9. Java Generik
  10. Kelas File Java