Trong java một lớp được khai báo với từ khóa abstract là một lớp trừu tượng, một lớp trừu tượng thì phải có ít nhất một phương thức ảo.
Trước khi vào tìm hiểu lớp abstract trong java thì bạn cần hiểu tính trừu tượng 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. Sử dụng tính trừu tượng giúp chúng ta chỉ tập trung vào trọng tâm thay vì quan tâm đến cách nó thực hiện.
Có hai cách để sử dụng tính trừu tượng:
- Sử dụng lớp abstract
- Sử dụng interface
Lớp trừu tượng trong java
Một lớp abstract trong java thì phải có ít nhất một phương thức abstract ( phương thức ảo ). Phương thức abstract là phương thức được khai báo với từ khóa abstract và không có tính triển khai.
abstract class Car{ abstract void display(); }
Ở ví dụ trên phương thức display() là một phương thức abstract.
Lưu ý:
- Phương thức abstract thì không có dấu {} ở phía sau. Nếu có dấu {} thì chương trình tự hiểu phương thức đó là một phương thức trống chứ không phải không có trình triển khai.
- Một constructor không thể khai báo abstract.
- Một phương thức abstract không thể khai báo với từ khóa final.
Cách kế thừa một lớp abstract
Một lớp kế thừa lớp abstract nếu không muốn là lớp abstract thì phải overriding (ghi đè) tất cả các phương thức abstract của lớp cha.
Các bạn xem ví dụ sau.
abstract class HinhHoc{ abstract float dientich(); abstract float chuvi(); } class HinhTron extends HinhHoc{ float r; HinhTron(float r){ this.r = r; } @Override float dientich() { return 3.14f*r*r; } @Override float chuvi() { return 2*r*3.14f; } public void display(){ System.out.println("Chu vi: "+ chuvi()); System.out.println("Dien tich: "+ dientich()); } } public class TEST { public static void main(String[] args){ HinhTron hinhTron = new HinhTron(2); hinhTron.display(); } }
Chu vi: 12.56 Dien tich: 12.56
Mình tạo ra một lớp abstract HinhHoc và một lớp HinhTron kế thừa từ lớp HinhHoc. Trong lớp HinhTron mình tiến hành overriding lại các phương thức abstract của lớp HinhHoc.
Chú ý: Do mình code trong Android Studio nên chương trình trên có @Override
các bạn cũng không cần bận tâm lắm.
Bài viết của mình đến đây cũng kết thúc. Cám ơn các bạn đã theo dõi !
Để lại một bình luận