728x90
- 자바 문법 종합반 3주차 수강
인터페이스 개념이 조금 이해하기 힘들었다.
추상 클래스? 부모 클래스? 와 비슷한 개념같고 헷갈려서 정리
- 추상 클래스와 인터페이스의 공통점:
- 가지고 있는 추상 메서드를 구현하도록 강제
- 인스턴스화 불가능
- 추상 클래스의 목적: 해당 추상 클래스를 상속받아 기능을 이용하고 확장하는 것.
- 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
- public 이외의 접근제어자가 필요한 경우
- 일반 메서드가 존재할 수 있음 (추상 메서드 1개 이상)
- 인터페이스의 목적: 함수 구현을 강제하여 구현 객체의 같은 동작을 보장.
- 클래스와 별도로 같은 기능이 필요할 때 사용
- 일반 변수를 가질 수 없음 (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();와 같이 사용한다.
숙제가 너무 어렵다.... 포함관계와 추상화의 구현 과정을 더 연습해야 할 것 같다.
포함관계를 통해 클래스의 단일책임원칙을 구현한다.
추상화를 통해 클래스 간의 결합도를 낮춘다.
'TIL' 카테고리의 다른 글
[231018] JAVA 개인 과제, 웹 기초 특강 (0) | 2023.10.18 |
---|---|
[231017] 정규표현식, 예외처리 구현, TIL 특강 (0) | 2023.10.17 |
[231013] String.format(), 컬렉션 set 조회 방법 (0) | 2023.10.13 |
[231012] KPT 회고, 학습법 특강, next()와 nextLine() (0) | 2023.10.12 |
[231011] 비트 연산, Arrays 등 이용한 문제 풀기 (0) | 2023.10.11 |