안녕하세요 여러분! 오늘 수업에서는 객체 지향 프로그래밍에서 매우 흥미로운 주제에 대해 이야기하겠습니다. 이것이 인터페이스와 추상 클래스의 차이점입니다. 인터페이스는 언제 사용해야 할까요? 추상 클래스는 언제 올바른 선택입니까? 그리고 그에 대한 몇 가지 작은 예시를 배워봅시다! 함께 알아볼까요!
이 두 가지 개념은 상당히 "추상적인" 개념이지만 명확하게 이해하면 소프트웨어 설계에 쉽게 적용할 수 있습니다. 이제 시작하겠습니다!
이 강의는 주로 UML에 들어가기 전에 지식을 정리하는 복습이므로 이해하기 쉽도록 이 섹션의 주요 지식을 가장 간결하게 제시하려고 합니다.
인터페이스는 클래스가 구현해야 하는 "계약"과 같습니다. 여기에는 추상 메서드와 상수만 포함됩니다. 이 "계약"을 구현할 때 구현 개체는 규정된 방법을 구현해야 합니다. Java 8부터는 기본 메소드와 정적 메소드가 추가되어 인터페이스가 "업그레이드"되었습니다. 참 편리하죠?
추상클래스는 조금 다릅니다. 이는 "청사진"과 비슷하지만 구체적인 세부 정보(일반 방법)와 추상화(추상 방법)를 모두 제공할 수 있습니다. 이 "청사진"은 이를 상속하는 개체의 공통 속성이나 메서드를 지정하며, 특별한 점은 추상 클래스를 직접 인스턴스화할 수 없다는 것입니다.
좀 더 명확하게 보기 위해 비교해 보겠습니다.
Đặ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 |
그렇게 간단하지만 상황에 따라 가장 적합한 것을 선택하게 됩니다!
다음과 같은 경우 인터페이스를 사용해야 합니다.
추상 클래스는 다음과 같은 경우에 적합합니다.
동물에 관한 프로그램을 구축한다고 상상해 보세요.
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"); } }
보시다시피 Dog는 인터페이스에 정의된 동작만 구현하면 됩니다.
동물들에게 몇 가지 공통점이 있지만 각 종마다 고유한 방식으로 "먹는" 경우는 어떻게 되나요?
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"); } }
여기서 Dog는 이미 추상 클래스에서 사용 가능하므로 "sleep" 동작을 정의할 필요가 없습니다!
이제 인터페이스와 추상 클래스의 차이점에 대해 더 많이 이해하게 되었습니다. 한마디로:
팔로우해주셔서 감사합니다! 질문이 있으신가요? 주저하지 말고 댓글을 남겨주세요! ?
위 내용은 인터페이스와 추상 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!