Home >Java >javaTutorial >Interface và Abstract class

Interface và Abstract class

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 21:00:42353browse

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ó
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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn