본문 바로가기
BackEnd/Java

[Java] 상속과 인터페이스

by summer_light 2021. 7. 13.

인터페이스

다른 언어에서 찾기 힘든 자바의 고급 기능으로, 단일 상속의 한계를 극복할 수 있다.

인터페이스는 다중상속과 비슷한 기능을 제공하며, 외부를 서로 이어주는 통로 역할을 한다.

 

인터페이스 생성하기

interface 인터페이스명{
public abstract void();//추상 메소드
}


인터페이스 사용하기

class 클래스명 implements 인터페이스명{
   인터페이스에서 미구현 된 메소드 오버라이드;
}

 

 

인터페이스 구현 시 주의점

  • 인터페이스 내에 존재하는 메소드는 무조건 public abstract로 선언해야 한다.
  • 인터페이스 내에 존재하는 변수는 무조건 public static final로 선언해야 한다.

 

인터페이스 상속 시 주의점 

  • 클래스에 인터페이스 상속시 인터페이스 내에 정의된 모든 추상 메소드를 구현해야 한다.

 

 

EX01. 인터페이스

sayHi 인터페이스를 상속받은 Say는 SayHi 인터페이스의 추상 메소드를 모두 구현해야 한다.

package interfacetest;

interface SayHi{
	public static final int NUMBER = 0;//상수: static final int
	public void sayHi();//추상메소드
	void sayBye();//추상메소드
}

class Say extends Object implements SayHi{

	@Override
	public void sayHi() {//인터페이스에 있는 미구현(추상) 메소드 구현하기
		
	}

	@Override
	public void sayBye() {	}
	
}

 

 

 

추상 클래스 vs 인터페이스

  • 추상 클래스(abstract 클래스)는 일반 메소드와 추상 메소드 둘 다 가질 수 있는 반면에, 
    인터페이스는 오로지 추상 메소드와 상수만 가질 수 있다.

 

 

 

상속 vs 인터페이스

  • 상속 class A extends B
    "B라는 클래스를 상속받아 A만의 기능을 더한다."
    순수 상속 : 부모로부터 모든 권한과 재산 능력을 가져온다
  • 인터페이스 class A implements B
    "B라는 인터페이스를 구현하겠다."
    권한 상속 : 인터페이스(비어있는 것)을 가져와서 다 채워넣어 사용

 

'BackEnd > Java' 카테고리의 다른 글

[Java] 다형성 Polymorphism  (0) 2021.07.13
[Java] 추상 Abstract  (0) 2021.07.13
[Java] 자바 API 읽기  (0) 2021.07.09
[Java] String Builder / String Buffer  (0) 2021.07.09
[Java] 생성자 Constructor  (0) 2021.07.09

댓글