FaCode Ngôn ngữ Java Sự khác nhau giữa Abstract class và Interface
Sự khác nhau giữa Abstract class và Interface
Abstract class và interface đều được sử dụng để có được sự trừu tượng mà ở đó chúng ta có thể khai báo các phương thức trừu tượng. Nhưng có một vài sự khác nhau giữa abstract class và interface được liệt kê trong bảng sau:
Abstract class | Interface |
1) Abstract class có phương thức abstract (không có thân hàm) và phương thức non-abstract (có thân hàm). | Interface chỉ có phương thức abstract. Từ java 8, nó có thêm các phương thức default và static. |
2) Abstract class không hỗ trợ đa kế thừa. | Interface có hỗ trợ đa kế thừa |
3) Abstract class có các biến final, non-final, static and non-static. | Interface chỉ có các biến static và final. |
4) Abstract class có thể cung cấp nội dung cài đặt cho phương thức của interface. | Interface không thể cung cấp nội dung cài đặt cho phương thức của abstract class. |
5) Từ khóa abstract được sử dụng để khai báo abstract class. | Từ khóa interface được sử dụng để khai báo interface. |
6) Ví dụ:public abstract class Shape {public abstract void draw();} | Ví dụ:public interface Drawable {void draw();} |
Đơn giản để hiểu, đó là abstract class có được trừu tượng 1 phần (0 tới 100%), còn interface có được trừu tường toàn phần (100%).
Ví dụ về abstract class và interface trong java
Ví dụ sau là sự kết hợp giữa abstract class và interface.
Kết quả:
Code:
//tạo interface có 4 phương thức
interface A {
void a();
abstract void b();
public void c();
public abstract void d();
}
// tạo abstract class cung cấp cài đặt cho một phương thức của interface A
abstract class B implements A {
public void c() {
System.out.println("I am ps");
}
}
// tạo subclass của abstract class B, cung cấp cài đặt cho các phương thức còn lại
class M extends B {
public void a() {
System.out.println("I am pr");
}
public void b() {
System.out.println("I am lr");
}
public void d() {
System.out.println("I am ai");
}
}
// tạo lớp Test5 để gọi các phương thức của interface A
public class Test5 {
public static void main(String args[]) {
A a = new M();
a.a();
a.b();
a.c();
}
}
____________
7 Java frameworks phổ biến nhất hiện nay
__________
FaCode là một seri học tập lập trình, lần này là FaCode ngôn ngữ Java, bằng mọi nỗ lực FaCode sẽ hoàn thành các mục tiêu đề ra trong FaCode Ngôn ngữ Java. Hãy đồng hành cùng FaCode Ngôn ngữ Java và theo dõi chúng tôi nhé. FaCode Ngôn ngữ Java rất mong nhận được lời góp ý từ phía cộng đồng. Share4Happy với phương châm chia sẻ để hạnh phúc.