개발지식 먹는 하마 님의 블로그

Java - 인터페이스 본문

Java

Java - 인터페이스

devhippo 2025. 2. 5. 17:50

[ 추상 클래스 ]

  • 메소드 정의 시, 몸체를 생략
  • 반환 타입 앞에 abstract 추가
  • 추상 메소드가 하나라도 포함되면 그 클래스는 추상 클래스가 된다.
  • 객체를 생성할 수 없다.
public abstract class MyShape { //추상 메서드가 있기 때문에 추상 클래스이다
	public abstract void draw(Graphics g); //몸체 생략, 추상 메소드
}

추상 클래스에서 추상 메소드를 사용하는 이유는
추상 메소드가 서브클래스에서 오버라이딩 되도록 강제하기 위한 것이다.

추상 클래스를 상속받은 모든 서브클래스에 대해서 해당 추상 메소드를 오버라이딩하지 않아도
메소드 호출이 항상 올바르게 동작한다는 확신을 가질 수 있는 설계상의 이점 때문이다.

MyShape를 상속받은 서브클래스에서 draw를 호출하면
draw를 오버라이딩하지 않아도 호출은 정상적으로 동작한다.
단지, 오버라이딩하지 않았기 때문에 아무런 일도 일어나지 않을 뿐이다.

[ 인터페이스 ]

추상 메소드와 상수의 정의만을 포함하는 요소
업데이트 되면서 정적 메소드와 디폴트 메소드의 사용이 가능해졌다.

변수의 타입으로도 사용이 가능하다.

public intercface example{
	double getNum(); 					//묵시적으로 public으로 간주됨
	static int add(int a, int b){		//정적 메서드 사용가능
    	return a + b
    }
    default void result(){				//default 메서드 사용가능
    }
}

public class use implements example{	//implements 사용

}

< 다중 상속 >

  • 인터페이스 간에도 상속이 가능하다.
  • extends로 상속한다.
  • 인터페이스 간의 다중 상속이 가능하다.
  • 클래스 상속에서는 다중 상속이 불가능하지만, 인터페이스를 다중 상속 구현이 가능하다.
interface A { }
interface B { }
interface C extends A, B { } //인터페이스 간 다중 상속

class D implements A, B { } //클래스에 인터페이스 다중 상속

 

 

'Java' 카테고리의 다른 글

Java - 스레드(Thread)  (0) 2025.02.07
Java - 배열과 리스트  (1) 2025.02.06
Java - 오버로딩, 오버라이딩  (1) 2025.02.04
Java - 상속  (1) 2025.02.03
Java - 예외 처리  (0) 2025.01.31