자바는 객체 지향 언어의 특징을 구현하기 위해 상속, 인터페이스, 추상클래스라는 개념을 사용한다.
각각의 특징을 비교해 보자.
1. 상속(extends)
- extends 키워드를 사용한다.
- 기존의 클래스를 재사용 하여 새로운 클래스를 작성하는 것을 말한다.
- 상속을 이용하면 적은 양으로도 클래스 작성이 가능하고 공통 코드를 관리할 수 있어서 유지보수가 용이하다.
- 조상 클래스가 변경되면 자손 클래스에 영향을 미치지만 반대는 성립하지 않는다.
- 생성자와 초기화 블럭은 상속되지 않으며 멤버만 상속된다.
- 단일 상속만을 허용한다.
- Object 클래스는 모든 클래스의 조상클래스 이다.
2. 추상클래스(abstract class), 추상매서드(abstract method)
- abstract 키워드를 사용한다.
- 선언부만 작성하고 구현부는 작성하지 않은 것을 말한다.
- 상속을 통해서 자손클래스에 의해 완성된다.
- 생성자가 존재해야 한다.
- 인스턴스로 생성할 수 없다.
- 자손 클래스는 추상 클래스의 추상 메서드를 구현해야 한다.
- 추상메서드가 아닌 일반 메서드도 작성 가능하다.
public abstract class Player { // 추상 클래스 선언
int name;
int position;
int state;
public Player() { // 생성자가 존재 해야 한다
}
abstract void play(String game ); // 추상 메서드
void start() {
this.state = 1;
}
}
3. 인터페이스(interface)
- interface 키워드를 사용하여 선언하고 implement 키워드로 구현한다.
- 추상메서드와 상수만을 멤버로 가질 수 있다.
- 모든 멤버 변수는 public static final이며 생략 가능하다.
- 모든 메서드는 public abstract이며 생략 가능하다. (오버라이딩 하기때문에 구현 메서드는 public이어야 한다)
- 다중상속이 가능하다.
- 개발 시간 단축이 가능하다.
- 표준화가 가능하다.
- 서로 관계없는 클래스 끼리 관계를 맺어 줄 수 있다.
public interface Fruit {
public static final String color = "red";
String name = "apple";
public abstract void getName();
void getColor();
}
인터페이스의 구현 메서드가 public이어야 하는 이유
2019/04/23 - [자바/기타] - 자바 - 오버로딩, 오버라이딩
반응형
'Java & 스프링 > Java' 카테고리의 다른 글
[Java] equals() 메서드 (0) | 2019.05.01 |
---|---|
[Java] 접근제어자 (0) | 2019.04.24 |
[Java] 오버로딩, 오버라이딩 (0) | 2019.04.23 |
[Java] JVM이란? (0) | 2019.04.20 |
[Java] 클래스 변수와 인스턴스 변수의 비교 (0) | 2019.04.19 |
댓글