abstract

-추상클래스로서 interface처럼 실제로 동작하는 인스턴스를 가지고 있지 않다

-부모클래스로서 하위클래스에 '상속'하는 특징을 가지고 있다.

-abstract가 하위클래스에게 기능을 상속해주면

하위클래스는 기능을 재정의 하여 사용하고, 기능을 확장하여 사용이가능하다.

ex.동물은 먹고, 잔다, 배설한다라는 행위를 abstract클래스에서 하위클래스가 가져오면

하위클래스에서는 먹는다라는 행위을 가져오고 동물을 곰으로 재정의한다.

그리고 곰은 겨울잠을 잔다라는 행위로 확장하여 사용한다.

 

interface

-틀이라는 개념을 가진 부모클래스이다.

-실제로 동작하는 인스턴스를 가지고 있지않다.

-프로젝트를 할 때, 공통된 행위를 가진 메소드를 interface를 통해 하위클래스에서 전달 받아 사용된다.

ex.동물은 먹고, 잔다, 배설한다라는 공통된 행위를 여러클래스에서 사용할 수있다

이때, interface자체는 아무런 의미가 없지만 하위클래스와 행위를 가진메소드를 연결하는

역할을 한다고 이해하면 쉽다.

-자바는 다중상속을 지원하지않는다. 이유는 다중상속을 하게되면 상속받게되는

하위클래스에서 두개이상의 부모클래스에서 어디에 접근해야하는지 모르는

애매한 상태에 놓이게 되기때문이다. 그래서 나온게 interface라는 개념이다.


두개의 키워드가 헷갈리는 이유는 행위를 받아 하위클래스에서 동작하는 일때문이다.

결과적으로본다면 abstract는 '상속'의 개념을 가지고 있고 interface는 '다형성'의 개념을 가진 키워드이다.

프로젝트를 할 때의 여러클래스에서 공통된 동작을 하는 행위가 필요하다면 interface를 사용하고

부모클래스의 동작을 상속받아야하는 행위가 필요하다면 abstract를 사용해야한다.

'Java' 카테고리의 다른 글

서블릿  (0) 2022.07.12
API Method  (0) 2022.07.12

+ Recent posts