11/08/2018, 19:06

Lớp abstract trong java

Access Modifier trong Java Một lớp được khai báo với từ khóa abstract là lớp abstract trong Java. Lớp abstract có nghĩa là lớp trừu tượng, nó có thể có các phương thức abstract hoặc non-abtract. Trước khi tìm hiểu về lớp trừu tượng trong Java, bạn cần hiểu tính trừu tượng trong ...

Access Modifier trong Java

Một lớp được khai báo với từ khóa abstract là lớp abstract trong Java. Lớp abstract có nghĩa là lớp trừu tượng, nó có thể có các phương thức abstract hoặc non-abtract.

Trước khi tìm hiểu về lớp trừu tượng trong Java, bạn cần hiểu tính trừu tượng trong Java là gì.

Tính trừu tượng trong java

Tính trừu tượng là một tiến trình ẩn các cài đặt chi tiết và chỉ hiển thị tính năng tới người dùng.

Nói cách khác, nó chỉ hiển thị các thứ quan trọng tới người dùng và ẩn các chi tiết nội tại, ví dụ: để gửi tin nhắn, người dùng chỉ cần soạn text và gửi tin. Bạn không biết tiến trình xử lý nội tại về phân phối tin nhắn.

Tính trừu tượng giúp bạn trọng tâm hơn vào đối tượng thay vì quan tâm đến cách nó thực hiện.

Các cách để đạt được sự trừu tượng hóa

Có 2 cách để đạt được sự trừu tượng hóa trong java

  1. Sử dụng lớp abstract
  2. Sử dụng interface

Phương thức trừu tượng trong Java

Một phương thức được khai báo là abstract và không có trình triển khai thì đó là phương thức trừu tượng.

Nếu bạn muốn một lớp chứa một phương thức cụ thể nhưng bạn muốn triển khai thực sự phương thức đó để được quyết định bởi các lớp con, thì bạn có thể khai báo phương thức đó trong lớp cha ở dạng abstract.

Từ khóa abstract được sử dụng để khai báo một phương thức dạng abstract. Một phương thức abstract không có thân phương thức.

Phương thức abstract sẽ không có định nghĩa, được theo sau bởi dấu chấm phảy, không có dấu ngoặc nhọn theo sau:

// Khai bao phuong thuc voi tu khoa abstract va khong co than phuong thuc
abstract void printStatus();

Ví dụ về lớp trừu tượng và phương thức trừu tượng trong Java

Trong ví dụ này, Bike là lớp trừu tượng chỉ chứa một phương thức trừu tượng là run. Trình triển khai của nó được cung cấp bởi lớp Honda.

abstract class Bike{  
  abstract void run();  
}  
class Honda4 extends Bike{  
    void run() {
        System.out.println("running safely..");
    }

    public static void main(String args[]) {  
        Bike obj = new Honda4();  
        obj.run();  
    }  
}  

Kết quả:

running safely..

Kế thừa lớp Abstract trong Java

Trong ví dụ này, Shape là lớp trừu tượng, trình triển khai của nó được cung cấp bởi lớp Rectangle và lớp Circle. Hai lớp này kế thừa lớp trừu tượng Shape.

TestAbstraction1.java

// lop truu tuong Shape
abstract class Shape{  
    abstract void draw();  
}  
//Trong tinh huong nay, trinh trien khai duoc cung cap boi ai do, 
// vi du: nguoi su dung cuoi cung nao do  
class Rectangle extends Shape{  
void draw(){
  System.out.println("Ve hinh chu nhat");
  }  
}  
  
class Circle1 extends Shape{  
void draw(){
   System.out.println("Ve hinh tron");
}  
}  
  
//Trong tinh huong nay, phuong thuc duoc goi boi lap trinh vien hoac nguoi dung  
class TestAbstraction1{  
public static void main(String args[]) {  
   // Trong tinh huong nay, doi tuong duoc cung cap thong qua phuong thuc, 
   // chang han nhu getShape()  
   Shape s=new Circle1();
   s.draw();  
   }  
}  

Kết quả:

Ve hinh tron
Access Modifier trong Java
0