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.
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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Start Spring using IntelliJIDEAUltimate version...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

When using TKMyBatis for database queries, how to gracefully get entity class variable names to build query conditions is a common problem. This article will pin...
