[우아한테크코스] 3월 2일 TIL
오늘 배운 점 정리
- 자바 강의
- 로또 미션 2단계 리뷰
상속
상속을 통한 중복 코드 제거
클래스 다이어그램 - 중복 코드를 별도의 클래스로 분리
Extends 예약어를 이용해 분리한 클래스 상속 (클래스
를 상속하는 것)
Extends를 통해 부모 클래스의 모든 필드와 메서드를 자식이 상속하고, 자식은 멤버 필드와 메서드를 그대로 사용할 수 있다.
super() 예약어를 이용해 상속을 받아오고, 상속한 클래스의 메서드들을 사용할 수 있다.
추상화
상속처럼 사실은 중복을 제거하고자 하는 목적은 같지 않나? 상속을 해도 중복되는 코드를 제거할 수는 없을까?
추상메서드 예약어 abstract(): body가 없고 선언만 있다.
추상적으로 어떤 건지는 알지만 구현은 나를 사용하는 누군가가 해야해
추상메서드를 가진 추상클래스는 인스턴스화를 할 수 없다.
오버라이드: 부모 클래스에서 이미 구현된걸 다시 구현하는 것, 추상 메서드를 구현하는 것
업캐스팅 vs 다운캐스팅
- 업캐스팅: 하위클래스를 상위클래스로 타입을 변환하는 것
Caffeine beverage = new Coffee();
- 다운캐스팅: 상위클래스를 하위클래스의 타입으로 변환하는 것
Caffeine beverage = new Coffee(); If (beverage instanceof Coffee) { //instance - 실제 타입이 뭔지 확인할 때 사용하는 키워드 Coffee coffee = (Coffee) beverage; }
인터페이스
면과 면 사이의 공간 (ex 콘센트: 발전소와 가구의 만남)
- JDBC를 이용한 인터페이스 이해하기
자바 소스 코드와 DB 작업에 필요한 공통 부분을 추상화해 표준으로 만든다. 인터페이스를 통해 DB를 연결하고, SQL 쿼리를 생성하고, 인자를 전달해 자바로 전환하는 것
Connection: 데이터베이스 연결 인터페이스
인터페이스는 자바에서 한 단계 높은 추상화를 위해 사용하고 추상메서드처럼 선언부만 정의
소프트웨어 변경에 따른 소스 코드 변경을 최소화하여 유지보수 비용을 줄이고 변화에 대응하기 위해 인터페이스 사용한다 추상화에 따른 개발 비용도 생각해야 한다
@override는 붙이는게 좋다
상태가 있으면 추상메서드, 없으면 인터페이스다
언제 추상 클래스를 쓰고 언제 인터페이스를 쓸 것인가?