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.
1. Definition
Interface
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
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.
2. Key differences
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!
3. When should it be used?
Interface
You should use Interface when:
- Want to define a set of behavior that multiple (unrelated) classes can implement. For example: Fly, swim, run.
- Need to support multiple inheritance, because Java does not allow multiple inheritance with Abstract Class.
Abstract Class
Abstract Class is appropriate if:
- You want to share code between "related" (directly related) classes.
- Need to define reusable properties or methods in the subclass. For example: All animals "eat" and "sleep".
4. Illustrative example
Interface
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.
Abstract Class
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!
5. Summary
So we now understand more about the difference between Interface and Abstract Class. In short:
- If you need "multiple inheritance" or unrelated classes that perform the same behavior, choose Interface.
- If you want to share code and related classes, select Abstract Class.
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.