Abstraksi ialah salah satu prinsip asas Pengaturcaraan Berorientasikan Objek (OOP) yang merujuk kepada keupayaan sistem untuk menyembunyikan butiran pelaksanaan yang kompleks dan hanya menunjukkan fungsi penting. Matlamat pengabstrakan adalah untuk memudahkan interaksi dengan objek kompleks dengan membenarkan pengguna menumpukan pada perkara yang dilakukan oleh objek, dan bukannya bagaimana ia melakukannya.
Dalam amalan, abstraksi dicapai melalui penggunaan kelas abstrak dan antara muka, yang mentakrifkan tingkah laku yang mesti dilaksanakan oleh subkelas atau kelas konkrit.
Abstraksi menawarkan beberapa faedah:
Kelas abstrak membolehkan anda menentukan kaedah yang tidak mempunyai pelaksanaan (kaedah abstrak) dan kaedah konkrit yang boleh digunakan oleh subkelas. Mari buat contoh dengan kelas abstrak yang dipanggil Bentuk dan subkelas Bulatan dan Segi Empat.
// Classe abstrata public abstract class Forma { // Método abstrato public abstract double calcularArea(); // Método concreto public void imprimirArea() { System.out.println("A área é: " + calcularArea()); } }
// Subclasse Circulo public class Circulo extends Forma { private double raio; public Circulo(double raio) { this.raio = raio; } // Implementando o método calcularArea @Override public double calcularArea() { return Math.PI * raio * raio; } }
// Subclasse Retangulo public class Retangulo extends Forma { private double largura; private double altura; public Retangulo(double largura, double altura) { this.largura = largura; this.altura = altura; } // Implementando o método calcularArea @Override public double calcularArea() { return largura * altura; } }
public class Main { public static void main(String[] args) { Forma circulo = new Circulo(5); Forma retangulo = new Retangulo(4, 6); // Imprimindo áreas circulo.imprimirArea(); // Saída: A área é: 78.53981633974483 retangulo.imprimirArea(); // Saída: A área é: 24.0 } }
A área é: 78.53981633974483 A área é: 24.0
Antara muka ialah satu lagi cara untuk melaksanakan abstraksi. Mereka mentakrifkan kaedah yang mesti disediakan oleh kelas yang melaksanakannya, tetapi mereka tidak menyediakan pelaksanaan lalai.
// Interface public interface Forma { double calcularArea(); void imprimirArea(); }
// Classe Circulo implementando a interface public class Circulo implements Forma { private double raio; public Circulo(double raio) { this.raio = raio; } @Override public double calcularArea() { return Math.PI * raio * raio; } @Override public void imprimirArea() { System.out.println("A área do círculo é: " + calcularArea()); } }
// Classe Retangulo implementando a interface public class Retangulo implements Forma { private double largura; private double altura; public Retangulo(double largura, double altura) { this.largura = largura; this.altura = altura; } @Override public double calcularArea() { return largura * altura; } @Override public void imprimirArea() { System.out.println("A área do retângulo é: " + calcularArea()); } }
public class Main { public static void main(String[] args) { Forma circulo = new Circulo(5); Forma retangulo = new Retangulo(4, 6); // Imprimindo áreas circulo.imprimirArea(); // Saída: A área do círculo é: 78.53981633974483 retangulo.imprimirArea(); // Saída: A área do retângulo é: 24.0 } }
A área do círculo é: 78.53981633974483 A área do retângulo é: 24.0
Abstraksi ialah konsep asas dalam Pengaturcaraan Berorientasikan Objek yang membantu untuk mencipta sistem yang lebih ringkas, boleh digunakan semula dan lebih mudah untuk diselenggara. Dengan menggunakan kelas dan antara muka abstrak, pembangun boleh menyembunyikan kerumitan pelaksanaan, membenarkan pengguna dan bahagian lain sistem berinteraksi dengan objek dengan cara yang intuitif. Memahami dan menggunakan abstraksi adalah penting untuk pembangunan perisian berorientasikan objek yang berkesan.
Atas ialah kandungan terperinci Abstraksi dalam Pengaturcaraan Berorientasikan Objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!