728x90
반응형
자바는 객체 지향 언어다.
객체 지향 언어 중 가장 큰 특징은 <상속> 인데,
이러한 상속을 구현하는 형태를 간단히 정리하고자 한다.
(객체 지향 언어에 대한 개념은 아래 글을 참고하면 좋다.)
1. extends와 implements 개념 설명
자바에서 클래스와 인터페이스 간의 관계를 나타내는 방식이다.
1) extends
: 하나의 클래스가 다른 클래스의 기능과 특성을 확장하여 사용할 수 있도록 한다.
자식 클래스가 부모 클래스의 모든 멤버(필드, 메서드)를 상속받으며, "단일 상속"만 지원하기 때문에 하나의 클래스는 하나의 클래스만 직접적으로 상속할 수 있다.
class Parent {
// 부모 클래스의 멤버
}
class Child extends Parent {
// 자식 클래스에서 추가적인 멤버를 정의할 수 있음
}
2) implements
: 인터페이스를 구현하는 것을 나타낸다. 특정 인터페이스의 규약을 모두 구현하고 조건을 만족하여 클래스가 해당 인터페이스의 동작을 제공하는 것이다. 클래스는 여러 인터페이스를 구현할 수 있다는 것이 특징이다.
interface InterfaceA {
void methodA();
}
interface InterfaceB {
void methodB();
}
class MyClass implements InterfaceA, InterfaceB {
public void methodA() {
// InterfaceA의 메서드 구현
}
public void methodB() {
// InterfaceB의 메서드 구현
}
}
2. extends와 implements 차이점
-extends는
- 클래스 간의 상속 관계를 나타내며, 단일 상속만 가능
- 부모에서 선언/정의를 모두함
- 자식은 오버라이딩 할 필요 없이 부모의 메소드/변수를 그대로 사용할 수 있다.
-implements는
- 클래스가 인터페이스의 규약을 구현하는 것을 나타내며, 다중 인터페이스 구현이 가능
- 부모 객체는 선언만 하며, 정의는 반드시 자식이 오버라이딩해서 사용한다.
- 자식 클래스는 부모의 기능을 다시 정의해서 사용해야한다.
- Java와 c#의 인터페이스 상속은 상속 그 자체보다는 계약/분류의 의미가 강함
2. 결론
extends는 클래스 간의 계층 구조를 형성하는 데 사용되고,
implements는 클래스가 인터페이스의 동작을 제공하는 데 사용된다고 볼 수 있다.
상속이라는 관점에서 둘은 비슷해보이지만
사용하는 형태가 다르기 때문에 기억해두는 편이 좋을 것 같다!
참고로 둘의 형태를 결합한 abstract 개념도 있으나
그건 생략하고 정리했다.
개발 시 혹은 개인 공부 시에 참고하면 좋을 것 같다.
반응형
'Programming Languages > Java' 카테고리의 다른 글
[JAVA] 자바 기본형 타입 종류와 크기 (0) | 2024.06.27 |
---|---|
[JAVA] BufferedReader, BufferedWriter 사용해야 하는 이유 (0) | 2024.06.20 |
[JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란? (1) | 2024.02.08 |
[JAVA/알고리즘] 깊이 우선 탐색 (DFS) 이란? / 자바 사용 예시 총 정리 (2) | 2023.08.18 |
[JAVA/자료구조] Iterator와 반복문 / 자바에서 Iterator 사용하기 (0) | 2023.05.28 |