상세 컨텐츠

본문 제목

추상 클래스와 인터페이스의 차이

JAVA

by young1403 2023. 4. 20. 00:42

본문

- 추상 클래스

1. class 앞에 키워드 'abstract'를 붙여 사용 

2. 여러 클래스에서 공통적으로 사용하는 부분을 추상클래스로 만들어 상속을 통해 사용 

3. 추상 메서드 앞에는 abstract 붙여서 사용

public abstract class Car {

	
    // abstract 리턴타입 메서드이름();
    abstract String getName();
    
    
    // 일반 메서드 작성 가능
    double getChargeQuantity(){
        return getTripDistance() / getDistancePerLiter();
    }
}

 

 

- 인터페이스

1. 인터페이스는 일종의 추상클래스.

2. 인터페이스의 추상화의 정도가 추상클래스보다 높기 때문에 추상 클래스에서 가지던 멤버변수와 일반 메서드를 구성원으로 가질 수 없음.(JDK 1.8이후 default 메서드 예외)

3. 오버라이딩시 public으로 선언해야함(보통 인터페이스에서 public abstract를 생략하고 사용함)

4. 여러개의 인터페이스로부터 다중 상속을 받는 것이 가능하다.

public interface Car {

	//추상메서드. public abstract 생략되어 있음
    String getName();
    double getChargeQuantity();
    
    //JDK1.8부터 사용가능한 default메서드를 통한 메서드 구현
	default double getChargeQuantity(){
        return getTripDistance() / getDistancePerLiter();
    }
    
}

 

결론
추상클래스와 인터페이스 모두 '추상화'라는 작업을 위해 사용함.

일부 구현 메서드가 필요할 시 추상클래스를 사용하는게 유리하였으나 JDK1.8버전 이후로는 interface에서도 구현메서드 사용 가능.

여러 클래스를 만들었는데 클래스들의 행위/역할이 겹친다? 라는 생각이 들면 주저없이 interface 나 추상클래스의 사용을 고려해보자.

관련글 더보기

댓글 영역