본문 바로가기
TIL

[231016] 추상클래스와 인터페이스, 다형성 구현

by 진진리 2023. 10. 16.
728x90
  • 자바 문법 종합반 3주차 수강

인터페이스 개념이 조금 이해하기 힘들었다.

추상 클래스? 부모 클래스? 와 비슷한 개념같고 헷갈려서 정리

 

  1. 추상 클래스와 인터페이스의 공통점:
    • 가지고 있는 추상 메서드를 구현하도록 강제
    • 인스턴스화 불가능
  2. 추상 클래스의 목적: 해당 추상 클래스를 상속받아 기능을 이용하고 확장하는 것.
    • 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
    • public 이외의 접근제어자가 필요한 경우
    • 일반 메서드가 존재할 수 있음 (추상 메서드 1개 이상)
  3. 인터페이스의 목적: 함수 구현을 강제하여 구현 객체의 같은 동작을 보장.
    • 클래스와 별도로 같은 기능이 필요할 때 사용
    • 일반 변수를 가질 수 없음 (static final이어야 함)
    • 다중 상속 가능

 

  • 3주차 숙제 중 포함관계 & 상속관계 구현

클래스 A, B, C, D를 클래스 N에 포함시키고자 할 때

클래스 N에 클래스 A의 변수 a, B의 변수 b, ... 를 선언한다.

클래스 N의 생성자를 선언하면서 매개변수를 (A a, B b, C c, D d)으로 받고 this.a = a; this.b = b; 로 각각 저장한다.

이후 클래스 N에서 변수 a, b, c, d의 메서드를 사용한다.

 

  • ABCD의 공통된 부분으로 추상 클래스 M을 생성(상속 관계, 추상화)

ABCD의 공통된 함수를 추상 메서드 e로 만든다.

각 A, B, C, D가 M을 상속받고 각각 클래스 내에서 추상 메서드 e를 재정의한다.

클래스 N에 a, b, c, d 대신 추상 클래스 M의 변수 m을 선언한다.

클래스 N의 생성자의 매개변수로 (M m)을 받고 this.m = m;으로 대입한다.

다형성을 이용해 M 내에서 A, B, C, D 간의 변경을 위해 N 클래스 내부에 생성자와 같은 내용인 set 메서드를 생성한다.

클래스 N에서 재정의된 추상 메서드는 m.e();와 같이 사용한다.

 

 

 

숙제가 너무 어렵다.... 포함관계와 추상화의 구현 과정을 더 연습해야 할 것 같다.

포함관계를 통해 클래스의 단일책임원칙을 구현한다.

추상화를 통해 클래스 간의 결합도를 낮춘다.