JAVA

인터페이스, 추상클래스

whyWhale 2021. 5. 16.

Abstract 와 Interface의 공통점

  • 선언만 가능하고, 직접 구현이 불가능하다.
  • new 연산을 할 수 없으며 상속받은 자만이 new 연산이 가능하다.
  • 구현이 반드시 필요하다.

 

 

Interface


인터페이스는 구현 객체들이 동일한 동작 할 수 있는 것을 보장한다.

  • 자바의 다형성을 극대화하여 개발 코드의 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용한다.
  • 밑 그림의 역할을 한다.
  • 다중 상속이 가능하다.

장점

  • 개발 시간을 단축 할 수 있다.
    • 규약만 정해두어 각자의 부분만 따로 나눠서 작성된 코드를 컴파일 할 수 있다.
  • 표준화가 가능하다
    • 클래스의 기본틀을 제공하여 개발자들에게 정형화된 개발을 강요할 수 있다.
  • 서로 관계 없는 클래스들에게 관계를 맺어 줄 수 있다.
    • 코드의 종속성을 줄이고 유지보수성을 높인다. 즉 클래스 끼리 쓸데없는 상속을 피할 수 있다.
  • 독립적인 프로그래밍이 가능하다.
    • 직접적인 관계를 맺지않고 간접적인 방법으로 한 클래스의 변경이 다른 클래스에 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.

 

Abstract


추상 클래스는 상속을 통해 기능 확장이 목적이다.

  • 완성되지 않은 설계도 이다. 즉 상속을 하면서 완성을 해나가는 것이다.
    • 하지만 상속을 통해 완성 시켜 나가는 것이 아닌 상속을 통해 공통적인 종속성을 가질 때 사용 할 수도 있다.
  • 추상클래스를 상속받은 경우 추상메소드를 반드시 모두 구현해야 한다.
    • 하나라도 구현하지 않으면 상속받은 클래스를 추상클래스로 지정해야 한다.

 

차이점 요약

인터페이스 (HAS - A) 추상클래스 (IS-A)
구현 객체가 같은 동작을 하는 것을 보장 상속받아 기능을 이용하고 확장한다.
다중상속이 가능하다. 다중 상속이 불가능하다.
상수,추상 메소드만 가능하다.(자바8 이후 default 메소드와 static 메소드가 가능하다) 일반 메소드,추상 메소드, 일반 변수 선언이 가능하다.
생성자와,일반 변수를 가질 수 없다. 생성자와 일반 변수를 가질 수 있다.

implements extends

 

 

🔊 JAVA 8 이후 인터페이스 사용

 

public interface IFS {
	
    // 상수 Immuatable 하다
    String ConstantValue = "normal value";
    public static final StaticConstantValue = "static value";
    
    // abstract 메소드
    (abstarct) void absMethod(String param1, ..);
    
    // default 메소드 (JAVA8에서 가능)
    default String defMethod(String param1, ..) {
    	...
    }
    
    // static 메소드 (JAVA8에서 가능)
    static void staticMethod(String param1,..) {
    	...
    }

'JAVA' 카테고리의 다른 글

Blocking , NonBolocking  (0) 2021.05.23
Enum class  (0) 2021.05.17
static  (0) 2021.05.04
가비지 콜렉터의 종류  (0) 2021.05.03
Garbage Collector  (0) 2021.04.25

댓글