본문 바로가기

Wanna be a Programmer/Java Programming

Java Programming - Abstract vs Interface


Abstract


- instance 메소드, class에 사용되는 제한자

의미 : 추상적이다 구현이 안되었다.

- 메소드 : 메소드 구현 없이 선언만한 메소드 

ex) public abstract void go(); {}이 붙으면 안된다.

하위 class에서의 overriding을 강제한다. 하위 class들이 구현한 메소드의 template() 역할

- Class : 객체 생성을 못하는 class 

ex) public abstract class Animal { 구현 }

abstract 메소드를 가지는 class는 반드시 abstract class가 되야한다. 부모 class에 정의된 abstract 메소드를 overriding 안하면 abstract class가 되어야한다.

abstract class는 구현된 일반 메소드도 가질 수 있다.

역할 : 자식 classtemplate, 자식 객체에 대한 type 역할(다형성과 연결되는 개념)

 


Interface(인터페이스


완벽히 추상화된 구조

- 역할 : 상위 type으로서의 역할 하위 class에 대한 typetemplate을 위한 구조

구문 : [접근제한자]interface 이름[extends 인터페이스, ...] {

- 구현 : public static final 변수 = ; public abstract 메소드 선언; }

- Class에서 Interface 상속 다중상속 가능

구문: [제한자]class 이름[extends classimplements interface, “,” ] {

        ex) public class A extends B implements I.A, I.B, I.C { }

Class Class : extends, 단일상속

         Interface Interface : extends, 다중상속

         Class ---> Interface : implements, 다중상속

- 역할

상위 type 하위 class가 정리할 메소드 선언(추상)

다형성에서 하위 객체를 대입할 변수의 type

     ⑶ 프로그램의 다른 class들에서 사용할 상수 값(코드, 불변의 값) 선언

크게 관계없는 class들을 하나의 type으로 묶을 때 사용