JAVA

[Eclipse] 추상클래스, 인터페이스

kangjisoo 2021. 6. 23. 11:32

* 추상클래스(abstract class)

: 추상메소드(미완성 메소드)를 포함하고 있는 클래스

- 다른 클래스를 작성하는 데 도움을 줄 목적으로 작성된다. (상속의 개념)

- 객체화 할 수 없음

 

* 추상메소드(abstract method)

: 선언부만 있고 구현부(몸통, body)가 없는 메소드 

-abstract 키워드로 선언되고 중괄호가 없는 메소드

- 메소드 선언만 통일하고 실행 내용은 실체 클래스마다 달라야 하는 경우

- 추상클래스를 상속받는 자손클래스에서 추상메서드의 구현부를 완성해야 한다

 

abstract class AbsEx1{ 
	int a = 100; 
	final String str = "abstract test"; 
    
	public String getStr(){ 
	return str;
	}
// 추상 메서드는 몸체(body)가 없다. 
abstract public int getA();
}

 

 


 

* 인터페이스(interface)

 

- 일종의 추상클래스. 추상클래스(미완성 설계도)보다 추상화 정도가 높다. 

- 실제 구현된 것이 전혀 없는 기본 설계도.(알맹이 없는 껍데기)

- 추상메소드와 상수만을 멤버로 가질 수 있다.

- 객체화를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.

- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다.

 

- 모든 멤버변수는 public static final이어야하며, 생략 가능하다.

- 모든 메소드는 publuc abstract이어야하며, 생략 가능하다.

- 인터페이스를 상속받은 클래스의 메소드는 반드시 재정의해야함 (오버라이딩)

public interface RemoteControl { 
	//상수
	public int MAX_VOLUME = 10;
	public int MIN_VOLUME = 0;
    
	//추상 메소드 
	public void turnOn(); 
    
	//메소드 선언부만 작성 (추상 메소드)
	public void turnOff();
	public void setVoulume(int volume);
}

- 인터페이스를 구현하는 것은 클래스를 상속받는 것과 같다. (‘extends’ 대신 ‘implements’를 사용한다.) 

- 인터페이스를 구현받아 메소드를 재사용하여 사용한다. (클래스와 달리 다중구현,상속 허용)