Home >Java >javaTutorial >Interface và Abstract class
Hello everyone! Today, in today's lesson, we will talk about a very interesting topic in object-oriented programming. That's the difference between Interface and Abstract Class. When should we use Interface? When is Abstract Class the right choice? And let's learn a few small illustrative examples of them! Let's find out together!
These are two quite "abstract" concepts, but if you understand them clearly, you will easily apply them to software design. Now let's begin!
Because this lesson is mainly a review to consolidate your knowledge before entering UML, I will try to most succinctly present the main knowledge of this section to help you understand. easy to remember and apply.
Interface in Java is like a "contract" that classes must implement. It only contains abstract methods and constants. When implementing this "contract", the implementing objects are required to implement the prescribed methods. From Java 8 onwards, Interface has been "upgraded" with the addition of default methods and static methods. It's so convenient, isn't it?
Abstract Class is a little different. It is like a "blueprint" but can provide both concrete details (regular methods) and abstractions (abstract methods). This "blueprint" specifies the common properties or methods of the objects that inherit it, the special point is that you cannot directly instantiate an Abstract Class.
Let's compare to see more clearly:
Đặc điểm | Interface | Abstract Class |
---|---|---|
Từ khóa sử dụng | interface | abstract class |
Kế thừa | Một lớp có thể triển khai nhiều interface | Một lớp chỉ có thể kế thừa một abstract class |
Phương thức | Chỉ chứa phương thức trừu tượng (trước Java 8) | Có cả phương thức trừu tượng và thông thường |
Constructor | Không có | Có |
Biến | Chỉ chứa hằng số (public static final) | Có thể chứa biến với mọi mức độ truy cập |
Tốc độ thực thi | Nhanh hơn (được tối ưu hóa hơn) | Chậm hơn |
Thích hợp cho | Các hành vi chung giữa các lớp không liên quan | Các lớp có mối quan hệ kế thừa |
It's as simple as that, but depending on the situation, you will choose the most suitable one!
You should use Interface when:
Abstract Class is appropriate if:
Imagine you are building a program about animals:
public interface Animal { void eat(); void sleep(); } public class Dog implements Animal { @Override public void eat() { System.out.println("Dog eats bones"); } @Override public void sleep() { System.out.println("Dog sleeps in a kennel"); } }
As you can see, Dog only needs to implement the behavior defined in the Interface.
What if animals have a few things in common but each species "eats" in its own way?
public abstract class Animal { abstract void eat(); void sleep() { System.out.println("This animal sleeps"); } } public class Dog extends Animal { @Override public void eat() { System.out.println("Dog eats bones"); } }
Here, Dog does not need to define the "sleep" behavior because it is already available from the Abstract Class!
So we now understand more about the difference between Interface and Abstract Class. In short:
Thank you for following! Any questions? Don't hesitate to leave a comment! ?
The above is the detailed content of Interface và Abstract class. For more information, please follow other related articles on the PHP Chinese website!