[스진초 4기] 인터페이스

창진·2023년 7월 25일

[스진초 4기] 

목록 보기
2/11

인터페이스가 가지고 있는 객체 지향의 특징

  • 간단하게 말하자면, 아직 구현되지 않은 설계도라고 할 수 있으며, 추상 메소드들의 모음이라고도 표현할 수 있습니다.
  • 사용 방법은 다음과 같습니다:
    선언 - interface 이름{ 추상 메소드 + 상수 }
    구현 -class 클래스명 implements 인터페이스명 { 구현 } 이렇게 사용하시면 됩니다.(추상 클래스 사용과 비슷합니다)

추상클래스가 궁금하다면??

설명 과 코드 예제 링크

추상클래스와 다른점이 있다면?

  • iv(인스턴스 변수)는 허용되지 않지만 상수는 사용가능
    (상수는 무조건! public static final 타입 상수이름 = 값; )

  • 메소드 선언할떄는 무조건! public abstract 가 앞에 와야합니다.(생략 할 경우 자동으로 붙여짐)

  • 다중 상속이 가능하며, 다른 클래스들과 다르게 Object 클래스를 상속받지 않습니다.

예제코드

추상클래스

abstract class  이름{
	int a; (iv 사용가능)
    boolean b;
	abstract void haha(); // 추상 메서드
    
    A(){
    	a = 0;
        b = false;
    }(생성자 사용가능)
}

인터페이스

interface 이름{
	public static final int a = 0; // 상수 사용 가능
    public abstract 이름();
}

인터페이스의 다중상속 가능(Object가 최고 조상이 아님)
충돌의 위험이 없기 때문에 가능합니다.

interface C extends A,B{}

인터페이스 구현

class E implements A{(구현)}
class D extends D implements A{}

인터페이스의 장점은??

  • 두 객체간의 연결을 돕는 중개자 역할을 수행합니다.
    ex) 우리가 컴퓨터를 사용할 때, 직접 본체에 명령을 내리지 않고 운영체제를 통한 사용자 인터페이스(UI)를 이용하여 컴퓨터를 운용하는 것과 같습니다!

  • 변경에 유리한 유연한 설계가 가능합니다.

  • 표준화가 가능합니다.
    ex) jdbc( Oracle이나 MySQL과 같은 데이터베이스의 쿼리 언어는 서로 다를 수 있지만, JDBC를 통해 표준화되어 사용자들이 손쉽게 사용할 수 있게 되는 것처럼 말이죠.)

  • 서로 관계없는 클래스들을 관계를 맺어줄 수 있습니다.

  • 선언과 구현을 분리시킬수 있습니다.
    ex)

정리

  • 인터페이스는 추상 메소드의 모음이자 상속이 가능한 특성을 가지고 있습니다.앞서 정리한 내용을 보면 객체지향의 특징을 대부분 가지고 있다해도 봐도 과언이 아닙니다. 그러나 인터페이스를 사용할 때 몇 가지 제약 조건이 있으므로, 이러한 점들을 주의하면서 활용해야 합니다.
  • 인터페이스를 사용하면 선언부와 구현부를 분리할 수 있어, 유연한 사용이 가능합니다. 인터페이스를 사용하지 않을 경우 클래스를 수정하면 변경 범위가 커질 수 있지만, 인터페이스를 통해 선언부와 구현부를 분리하면 선언부에는 영향을 최소화하고 구현부만 수정할 수 있습니다. 이러한 이점이 jdbc 그리고 프레임 워크에서 들어납니다.
profile
안녕하세요

0개의 댓글