다형성
- 다형성의 의미와 장점
- 한 타입의 참조변수가 여러 타입의 객체를 참조할 수 있음
- 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 함
- 코드의 유연성
- 의존성을 가진 클래스에서 의존하는 클래스의 하위 클래스 참조변수마다 메서드를 작성하지 않아도 됨
- 참조변수의 타입변환, 업캐스팅/ 다운캐스팅
- 상속관계를 전제로 함
- 업캐스팅은 생략해도 됨
- 다운캐스팅은 업캐스팅이 선행됐어야 한다는 전제가 있음
- 업캐스팅: 상위클래스 참조변수에 하위클래스 객체를 참조하는 것, 형변환 연산자 생략 가능
- 다운캐스팅: 하위클래스 참조변수에 하위클래스 객체를 참조하는 것 , 형변환 연산자 생략 불가능
- <참조변수> instanceof 타입
- 코드가 복잡해지면 클래스들의 종속관계를 알기 어려울 수 있음
- instanceof연산자는 타입변환이 가능한지를 ture/false 로 반환함
추상화
- 추상화의 개념과 목적
- 기본 클래스들의 공통적인 요소들을 추출해서 상위클래스를 만드는 것
- 클래스의 역할과 구현을 분리해줌
- abstract 제어자
- 추상적인, 미완성
- 추상 메서드, 추상 클래스
- 객체 생성 불가
- 추상 클래스
- 추상 메서드를 하나라도 포함한 클래스
- 상속 관계에 있어 새로운 클래스를 작성하는데 유용
- final 키워드
- 클래스: 변경, 상속, 확장 불가
- 메서드: 오버라이딩 불가
- 변수: 값 변경 불가
- 인터페이스
- 추상 메서드를 하나 이상 포함
- 기본적으로 추상 메서드와 상수만을 멤버로 가질 수 있지만, 자바 8부터 default/static 메서드 사용 가능
- 내부 모든 필드 public static final
- static/default 메서드를 제외한 모든 메서드는 public abstract
- 위의 제어자 생략 가능
- 역할과 구현을 분리시켜 사용자는 복잡한 구현의 내용 또는 내용의 변경과 상관없이 해당 기능을 사용할 수 있음
- 추상 클래스와 인터페이스의 차이
- 추상 클래스는 상속(extends) , 인터페이스는 구현(implements)
- 인터페이스를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야함(오버라이딩 강제성)
- 추상 클래스 단일 상속만 허용, 인터페이스는 다중 구현 허용
- 인터페이스와 추상클래스에 대해서 참고할 만한 블로그 글
'부트캠프 기록 > Section1' 카테고리의 다른 글
[Java] 컬렉션 페어프로그래밍 회고/ 15일차 기록 (0) | 2022.09.17 |
---|---|
[Java] 컬렉션 (0) | 2022.09.17 |
[Java] 객체지향 프로그래밍 심화/ 12일차 기록 (0) | 2022.09.06 |
[Java] 객체지향 프로그래밍 기초/10- 11일차 기록 (0) | 2022.09.05 |
[자바]기초/ 9일차 기록 (0) | 2022.09.04 |