반응형
다형성이란?
- 동일한 타입을 사용하지만 다양한 결과가 나오는 성질
- 실행 도중에 어떤 객체를 필드로 사용하느냐에 따라 결과가 달라짐
- 자동 형변환을 이용해 필드값을 변경하면 메서드를 수정 안 해도 다양한 결과를 얻을 수 있음
- ex) 컴퓨터는 저장소, 그래픽 카드 등의 객체를 보유하고 있다. 하지만, 사용하면서 부품을 교체해가면서 사용한다. 새로운 부품은 기존과 동일하지만 실행 결과는 더 좋게 나온다.
캐스팅(Casting) : 강제 타입 변환
- 부모 타입을 자식 타입으로 변환하는 것
- 자식 타입이 부모 타입으로 자동 형변환한 후, 본래 타입으로 변환할 때 본인의 필드나 메서드 사용이 가능해짐
추상 클래스
- 클래스들의 공통 특성을 추출해 선언한 클래스
- 실체 클래스와 상속 관계
- 추상 클래스가 부모, 실체 클래스가 자식
- 실체 클래스는 추상 클래스의 모든 속성을 물려받고, 추가로 필드나 메서드를 보유할 수 있음
- 실체 클래스들의 공통된 필드와 메서드의 이름을 통일할 목적으로 사용한다.
- 실체 클래스를 작성할 때 시간 절약을 위해 사용한다.
- abstract 키워드를 사용한다.
public abstract class Name {
}
추상 메서드와 오버라이딩
- 메서드 선언만 같고, 내용은 클래스마다 달라야 할 때가 있다. 이때, 추상 클래스는 추상 메서드를 선언할 수 있다.
- 추상 메서드는 선언부만 있고 내용은 없다.
- 하위 클래스가 반드시 실행 내용을 실행하도록 하고 싶다면 추상 메서드로 선언하면 된다!
public abstract class Name {
public abstract void method();
}
- 아래와 같이 추상 메서드를 재정의해 사용한다.
public class BJ extends Name {
@Override
public void method() {
Sysout("~~~");
}
}
출처
반응형
'Java' 카테고리의 다른 글
[Java] StringBuilder vs StringBuffer (0) | 2021.08.03 |
---|---|
[Java] Solid란? (0) | 2021.07.28 |
[Java] 상속, final, 자동 형변환 (0) | 2021.06.22 |
[Java] 객체지향 프로그래밍(OOP)이란? (0) | 2021.06.22 |
[Java] Java의 메모리 구조, NullPointerException, String (0) | 2021.06.21 |