본문 바로가기
Java & 스프링/Java

[Java] extends(상속), implements(인터페이스), abstract(추상)

by hjhello423 2019. 4. 23.

자바는 객체 지향 언어의 특징을 구현하기 위해 상속, 인터페이스, 추상클래스라는 개념을 사용한다.

 

각각의 특징을 비교해 보자.

 

 

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

댓글