JavaRush /Blog Java /Random-VI /Tại sao cần có giao diện?
Павел
Mức độ

Tại sao cần có giao diện?

Xuất bản trong nhóm
Tại sao cần có giao diện? Tại sao kế thừa giao diện lại cần thiết? Tại sao cần có tính đa hình? Dành cho những ai đã đọc và hiểu cách làm giao diện nhưng chưa hiểu tại sao.

Tuyên bố miễn trừ trách nhiệm: Trong bài viết này và các bài viết tiếp theo, việc đặt tên các lớp và phương thức sẽ được đưa ra bằng tiếng Nga.

Khi nói đến các nguyên tắc của lập trình hướng đối tượng (OOP): đa hình, kế thừa và đóng gói, việc sử dụng các phép loại suy trong thế giới thực sẽ rất hữu ích. Ưu điểm lớn của OOP là chúng ta có thể mô phỏng một phần vũ trụ thực trong chương trình. Hãy mô hình hóa gia đình Ivanov: Bố , mẹ và cậu bé Petya . Từ bố, Petya thừa hưởng thói quen húp xì xụp khi uống trà, còn từ mẹ, cậu bé thừa hưởng thói quen mím môi khi đọc sách. Nếu chúng ta cố gắng triển khai tình huống này vào một chương trình, chúng ta sẽ có ba lớp:
class Папа
class Мама
class Петя
Bốmẹ có những thói quen cần được truyền lại cho Pete . Thói quen là một loại hành động nào đó - vì vậy tốt nhất nên áp dụng chúng trong thế giới phần mềm dưới dạng các phương pháp: Bố trước tiên :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Bây giờ mẹ :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Nếu chúng ta đang nói về tính kế thừa, thì việc viết mã như thế này là hợp lý:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Tức là thừa kế Petya từ bốmẹ cùng một lúc. Nếu bạn viết nó như thế này, trình biên dịch sẽ phàn nàn, vì trong Java bạn không thể triển khai kế thừa nhiều lớp. Nhân tiện, điều đó có thể thực hiện được trong C++, nhưng không thể thực hiện được trong Java, vì các vấn đề lớn có thể nảy sinh với tính đa kế thừa: chúng viết chi tiết trên Internet . Tại sao cần có giao diện?  - 1Để giải quyết vấn đề “không thể” này, Java có các giao diện. Và đối với thói quen, chúng tôi sẽ nghĩ ra giao diện của riêng mình. Số chẵn: Chúng sẽ trông như thế này:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Trong giao diện, chúng tôi chỉ mô tả các thói quen chứ không mô tả cụ thể chúng làm gì, vì chúng tôi sẽ viết cách triển khai cụ thể trong các lớp. Đầu tiên, hãy tạo cho bốmẹ những thói quen pháp luật.
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Và hiện nay, việc chuyển thói quen từ bốmẹ sang Pete cùng một lúc là hoàn toàn hợp pháp.
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Nghĩa là, việc triển khai nhiều lần (thường được gọi là triển khai) trong Java là hoàn toàn có thể. Tại sao cần có giao diện?  - 2Ý nghĩa của giao diện bây giờ đã rõ ràng - trong Java, bạn có thể triển khai đa kế thừa bằng cách sử dụng giao diện. Ví dụ, nếu chúng ta phát triển tình huống hơn nữa: xét cho cùng thì bốmẹ có lẽ có những thói quen mà họ không truyền lại cho Petya , và Petya cũng có thể có những thói quen của riêng mình. Bạn sẽ học cách chuyển Santa Barbara quan trọng này sang máy bay Java trong các tập sau. Đây không phải là ví dụ duy nhất để hiểu các giao diện, nếu bạn chưa đọc các bài viết sau thì hãy nhớ đọc: Giao diện trong Java (nếu không mở, bạn có thể thoát khỏi hồ sơ của mình hoặc đọc ở chế độ ẩn danh) Tại sao cần có giao diện trong Java Java - triển khai tất cả các ví dụ từ bài viết ở đây và thay đổi các phương thức cả trong giao diện và trong các lớp: tên của các phương thức, chữ ký (phương thức lấy làm đầu vào), loại phương thức đầu ra. Tự hiểu: - sự khác biệt khi triển khai giao diện với một lớp và một lớp trừu tượng; - phương pháp mặc định.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION