추상클래스 & 인터페이스

지환·2023년 10월 17일
0

JAVA

목록 보기
34/39

추상 클래스의 이해

  • 추상 클래스는 하나 이상의 추상 메소드를 갖는 클래스다.
  • 상속 관계에서 부모 클래스의 역할은 갖기 위한 클래스이며 추상 메소드와 일반 메소드를 가질 수 있다.

  • 추상 메소드는 메소드의 몸체가 없는 메소드이며 자식 클래스에서 재정의 하도록 하기 위한 메소드다.

  • 추상 클래스는 new동적 할당자를 통해 인스턴스 객체를 만들 수 없다.

  • 생성자,필드,메소드 선언을 할 수 있다.
    (생성자는 상속관계로 오버라이딩 할 떄 자식 클래스에서 생성자 호출이 있을 수 있으므로 생성자 호출이 가능하다)

부모 클래스 역할만 한다. 일반 메소드도 가질 수 있고 필드도 가질 수 있다.

추상 클래스는 인스턴스화 되지 않는다.

이 부분은 그렇게 되면 어찌 설명 되는가? -> Shape이라는 클래스를 호출하는 자식 클래스의 생성자가 호출한다.

인터페이스의 이해

  • 인터페이스는 일반적으로 추상 메소드만 가지며 Interface 키워드를 이용해 정의한다.

  • 특정 클래스가 인터페이스를 구현하기 위해서는 implements 키워드를 통해 구현한다.

  • 상속과 달리 인터페이스는 하나의 클래스가 둘 이상의 인터페이스를 동시에 구현 할 수 있다.

  • 인터페이스를 통해 설계와 구현을 완전히 분리 할 수 있다.

인터페이스의 이해(2/2)

  • 인터페이스에는 필드, 추상메소드, Static메소드, default메소드를 정의할 수 있다.

  • 인터페이스에 정의하는 모든 필드는 public static final(사용자 정의 상수)이 자동으로 적용된다.

  • Java8부터 인터페이스에 static메소드를 추가할 수 있으며, static 메소드의 사용은 일반 클래스와 동일하다.

  • Java8부터 default 메소드가 추가 되었으며 이 메소드는 그 자체로 완전한 메소드이며, 구현 클래스는 선택적으로 재정의 할 수 있다.

  • 생성자를 가질 수 없으며, 추상메소드로 구현한다.

인터페이스의 활용(1/2) - 다형성

  • 자바의 상속 구조는 단일 상속의 원칙을 갖기 떄문에 하나의 클래스가 여러 부모 클래스를 상속 할 수 없다.
  • 서로 다른 부모 클래스를 갖는 클래스간에도 같은 인터페이스를 구현할 수 있다.

  • 같은 인터페이스를 구현하고 있는 클래스간에는 그 인터페이스로 하여금 대표성을 갖게 할 수 있따.

  • 인터페이스만 인스턴스화 x

인터페이스의 활용(2/2) - 인터페이스 역할

  • 하나의 프로그램의 다수의 클래스들이 서로 관계를 형성하게 되고 각 클래스들은 역할에 따라 구분한다.

  • 클래스들간에 관계를 밀접하게 구성하게 되면 특정 클래스에서 변경이 일어날 경우 많은 클래스들이 영향을 받는다.

  • 따라서 클래스 간에 관계를 구성할 때 관계를 느슨하게 관리하는것이 중요하다.

  • 클래스와 클래스 사이에 인터페이스를 구성하면 직접적인 접근이 없는 느슨한 관계를 구성할 수 있다.

profile
아는만큼보인다.

0개의 댓글