- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
Chuyên mục với các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.
I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community. @#@ Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.
Thảo luận (0)
Đăng nhập để thảo luận
Trong lập trình hướng đối tượng với Java, abstract class (lớp trừu tượng) là một khái niệm quan trọng và thường gặp, đặc biệt khi thiết kế các hệ thống theo kiến trúc kế thừa. Lớp trừu tượng giống như một bản thiết kế chung cho các lớp con nhưng khác với interface, nó có thể chứa cả các phương thức trừu tượng (phương thức chỉ có phần khai báo) và các phương thức đã được triển khai sẵn.

Một lớp được khai báo là abstract không thể được khởi tạo trực tiếp bạn không thể tạo instance từ abstract class. Thay vào đó, nó được thiết kế để các lớp con kế thừa và cung cấp triển khai cụ thể cho các phương thức trừu tượng. Đồng thời, các lớp con cũng có thể sử dụng lại những phương thức đã được định nghĩa sẵn trong lớp trừu tượng.
Từ khóa abstract trong Java được dùng để khai báo cả lớp và phương thức trừu tượng. Khi một lớp có ít nhất một phương thức trừu tượng, bắt buộc lớp đó cũng phải được khai báo là abstract.
Sử dụng abstract class là một kỹ thuật thường được áp dụng để:
Sau đây là một ví dụ đơn giản về Lớp trừu tượng trong Java.
package com.journaldev.design;//abstract class public abstract class Person {
private String name; private String gender; public Person(String nm, String gen){ this.name=nm; this.gender=gen; } //abstract method public abstract void work(); @Override public String toString(){ return "Name="+this.name+"::Gender="+this.gender; } public void changeName(String newName) { this.name = newName; }}
Person được khai báo là abstract, nên không thể tạo đối tượng trực tiếp từ lớp này.work() là một phương thức trừu tượng chỉ có phần khai báo, không có thân. Bất kỳ lớp nào kế thừa từ Person bắt buộc phải override phương thức này để định nghĩa công việc cụ thể.changeName() và toString() là các phương thức đã triển khai sẵn (concrete methods). Các lớp con có thể sử dụng lại mà không cần viết lại, hoặc override nếu muốn thay đổi hành vi.Person(String nm, String gen) cho thấy abstract class vẫn có thể có constructor để khởi tạo các thuộc tính chung cho lớp con.Tiếp theo đây là ví dụ về lớp cụ thể sử dụng lớp trừu tượng trong Java.
package com.journaldev.design;public class Employee extends Person {
private int empId; public Employee(String nm, String gen, int id) { super(nm, gen); this.empId=id; } @Override public void work() { if(empId == 0){ System.out.println("Not working"); }else{ System.out.println("Working as employee!!"); } } public static void main(String args[]){ //coding in terms of abstract classes Person student = new Employee("Dove","Female",0); Person employee = new Employee("Pankaj","Male",123); student.work(); employee.work(); //using method implemented in abstract class - inheritance employee.changeName("Pankaj Kumar"); System.out.println(employee.toString()); }}
Employee kế thừa từ lớp trừu tượng Person và hiện thực sử dụng phương thức work() theo logic riêng là nếu empId = 0 ==> nhân viên không làm việc và ngược lại.main, bạn thấy một kỹ thuật rất phổ biến là code “dựa trên kiểu abstract” thay vì kiểu cụ thể (Person student = new Employee(...)).employee.changeName(...) cho thấy abstract class có thể chứa logic tái sử dụng, rất hữu ích khi nhiều lớp con cần dùng chung.toString() là phương thức override sẵn trong abstract class, giúp định dạng thông tin rõ ràng khi in đối tượng.Như bạn đã thấy qua ví dụ với lớp Person và lớp con Employee, abstract class trong Java là một công cụ mạnh mẽ để thiết kế các lớp cơ sở có thể định nghĩa hành vi dùng chung và ép buộc các lớp con phải cài đặt các hành vi cụ thể. Đây là một phần quan trọng trong tư duy lập trình hướng đối tượng và thường được sử dụng trong các kiến trúc phần mềm quy mô lớn. Tuy nhiên, để sử dụng abstract class một cách hiệu quả và tránh nhầm lẫn với interface, bạn cần nắm rõ một số quy tắc và đặc điểm kỹ thuật quan trọng mà Java quy định đối với abstract class.
Dưới đây là tổng hợp các đặc điểm và quy tắc quan trọng mà bạn cần nắm rõ khi làm việc với abstract class trong Java:
abstract được sử dụng để khai báo một lớp trừu tượng trong Java.abstract để khai báo phương thức trừu tượng đây là phương thức không có phần thân, chỉ có phần khai báo.static hoặc default). Từ Java 8, interface đã hỗ trợ phương thức default và static, giúp linh hoạt hơn trong thiết kế.main() và chạy như một lớp bình thường, miễn là bạn không cố tạo instance của nó trực tiếp.Abstract class là một trong những công cụ cực kỳ hữu ích giúp bạn tổ chức và tái sử dụng code trong Java. Qua bài viết này, hy vọng bạn đã hiểu rõ hơn về cách hoạt động của abstract class, từ khái niệm đến cách khai báo, kế thừa và triển khai các phương thức trừu tượng. Việc sử dụng abstract class đúng cách không chỉ giúp mã nguồn của bạn trở nên gọn gàng, dễ bảo trì mà còn tạo tiền đề vững chắc cho những thiết kế hướng đối tượng chuyên nghiệp hơn. Đừng quên rằng abstract class cũng rất linh hoạt khi kết hợp với interface, đặc biệt trong những dự án lớn đòi hỏi sự mở rộng và bảo trì lâu dài. Nếu bạn đang trên hành trình trở thành một lập trình viên Java chuyên nghiệp, nắm vững abstract class là bước không thể bỏ qua. Hãy thử áp dụng kiến thức này vào dự án thực tế của bạn và trải nghiệm sự khác biệt.