Abstract Class (Lớp Trừu Tượng) Là Gì? Abstract Method (Phương ...
Có thể bạn quan tâm
Trong bài viết này chúng ta sẽ đi tìm hiểu về Abstract Class và Abstract Method trong Java, cách sử dụng và các ví dụ minh họa.
1. Lớp trừu tượng (Abstract Class) trong Java
- Một lớp được khai báo với từ khóa abstract là lớp trừu tượng (abstract class).
- Lớp trừu tượng có thể có các phương thức abstract hoặc non-abstract.
- Lớp trừu tượng có thể khai báo 0, 1 hoặc nhiều method trừu tượng bên trong.
- Không thể khởi tạo 1 đối tượng trực tiếp từ một lớp trừu tượng.
Một lớp kế thừa từ lớp trừu tượng (subclass – lớp con) không cần phải implement non-abstract methods, nhưng những phương thức abstract trong lớp cha thì lớp con bắt buộc phải override. Trừ khi subclass cũng là abstract.
Cú pháp:
<PhamViTruyCap> abstract class <TenLop> { }2. 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 (abstract method).
- 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. 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.
Cú pháp:
<PhamViTruyCap> abstract void <TenPhuongThuc>();3. Ví dụ về lớp trừu tượng và phương thức trừu tượng
Ví dụ: Viết chương trình vẽ một hình bất kỳ với màu đỏ, sao cho cách sử dụng là giống nhau, bất kể đó là hình gì. Hình đó có thể là hình chữ nhật (rectangle), hình tròn (circle), tam giác (triangle), đường (line), …
Với yêu cầu trên, ta tạo một lớp trừu tượng Shape. Lớp này cung cấp một phương thức trừu tượng draw, phương thức này để đảm bảo rằng tất cả các hình đều có cùng cách sử dụng (draw). Ngoài ra, có phương thức không trừu tượng getColor để cung cấp màu sử dụng chung cho tất cả các hình. Tiếp theo, ta tạo 2 lớp Rectangle và Circle kế thừa từ lớp Shape, 2 lớp này có những cách xử lý draw khác nhau. Cuối cùng, ta tạo class ShapeApp, gọi phương thức draw để vẽ hình theo yêu cầu.
Shape.java
public abstract class Shape { private String color = "red"; public Shape() { } public abstract void draw(); public String getColor() { return color; } }Rectangle.java
public class Rectangle extends Shape { @Override public void draw() { System.out.println("Draw " + super.getColor() + " rectangle"); } }Circle.java
public class Circle extends Shape { @Override public void draw() { System.out.println("Draw " + super.getColor() + " circle"); } }ShapeApp.java
public class ShapeApp { public static void main(String[] args) { Shape rect = new Rectangle(); rect.draw(); System.out.println("---"); Shape circle = new Circle(); circle.draw(); } }Kết quả:
Draw red rectangle --- Draw red circle4. Một vài lưu ý
Lớp con bắt buộc phải cài đặt (implement) tất cả các phương thức trừu tượng của lớp cha
Bạn nhận được thông báo lỗi nếu lớp con không cài đặt (implement) tất cả các phương thức trừu tượng của lớp cha: The type Triangle must implement the inherited abstract method Shape.draw().

Không thể khởi tạo trực tiếp một lớp trừu tượng
Bạn nhận được thông báo lỗi khi cố tình khởi tạo một lớp trừu tượng: Cannot instantiate the type Shape.

Từ khóa » Java Lớp Trừu Tượng
-
Lớp Abstract Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts
-
[Tự Học Java] Class Trừu Tượng(Abstract) Và Phương Thức ... - Cafedev
-
Lớp Trừu Tượng (abstract Class) Trong Java - Góc Học IT
-
Lớp Trừu Tượng Trong Java - Nắm Vững Khái Niệm Về Abstract Trong ...
-
Lớp Trừu Tượng - Abstract Class Trong Java
-
Lớp Trừu Tượng - Abstract Class Trong Java - Hoclaptrinh
-
Abstract Class Và Interface Trong Java - GP Coder (Lập Trình Java)
-
Abstract Class Trong JAVA
-
Java 8 – Lớp Và Phương Thức Trừu Tượng - Phở Code
-
Tính Trừu Tượng (Abstraction) Trong Java
-
Java Bài 32: Tính Trừu Tượng (Abstraction) - Yellow Code Books
-
Cách Dùng Lớp Abstract Trong Java - Lập Trình Không Khó
-
Lớp Trừu Tượng Abstract Shape Trong Java | Tìm ở đây