뇌운동일지

[JAVA18] 추상 클래스 (Abstract class) VS 인터페이스(Interface) 본문

JAVA

[JAVA18] 추상 클래스 (Abstract class) VS 인터페이스(Interface)

purpleduck 2020. 3. 23. 10:18

추상 클래스란? 

: 추상 메소드를 포함하고 있는 클래스 

추상 메소드 : 선언만 있고 정의가 없는 메소드 

선언만 있다 -> 원형이 존재한다 

정의가 없다 -> 내용이 없다 ( { }이 존재하지 않는다 ) 

콘크리트 클래스 : 추상 클래스를 상속받음, 추상 클래스를 반드시 재정의 

 

추상클래스의 객체변수  = new 추상클래스의 생성자();   // X

// heap영역에 메모리를 할당해라. 생성자만큼 

정의가 없어서 메모리를 제대로 할당할 수 없음. 

-> 이렇게 사용할 수 없다. 

 

콘크리트 클래스의 객체변수 = new 콘크리트 클래스의 생성자();   // O

-> 주로 이렇게 사용 

 

추상클래스의 용도 : 뼈대, 설계도 

추상클래스 안에는 일반 메서드도 포함. 추상 클래스가 하나라도 있으면 추상클래스

-------------------------------------------------------------------------------------------------------

인터페이스 interface 

: 대면하고 있는, 조작기 라는 뜻

100% 추상메서드로 구성 

변수가 있음. 거의 상수 

-> 상수와 추상메서드

 

인터페이스는 상속이라는 말을 쓸 수 없음 

상속해줄 것이 없기 때문 

-> "적용한다" 라고 함 ( implements )

 

인터페이스를 적용하여 구현클래스를 만듦 

구현클래스에서 추상메서드를 재정의 

 

인터페이스 객체변수 = new 구현클래스 생성자();

-> 주로 사용 

복잡한 하위 인스턴스를 보지 않기 위해 상위 객체를 만듦. 

간단할수록 조작이 쉽기 때문이다. 

하위 member를 call해야 할 경우, 객체형변환을 이용해 호출한다 

 

인터페이스의 용도 : 조작기

인터페이스는 한번 설정하면 쉽게 바꿀 수 없음 

 

기능이 많을 경우, 인터페이스를 사용해서 필수적인 기능만 구현하기 

 

인터페이스는 다중상속 가능 (다중 구현) 

-> 두 개 이상의 인터페이스를 받는 경우, 다형성으로 쓰지 않고, 하위 객체를 만들어서 사용 

---------------------------------------------------------------------------------------------------------

추상클래스와 인터페이스 활용 

-> 공통 클래스를 만든다 

 

Comments