일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- darkest dark
- db
- oracle
- n x 2 타일링 2
- select
- 오라클
- 데이터길이
- 데이터베이스
- SQL
- JOIN
- 백준
- 그대로 출력하기
- Database
- 알고리즘
- 자바
- Java
- Dynamic Programming
- 2156
- DP
- Eclipse
- 입출력
- 동적계획법
- 변수
- 문자열
- 반복문
- 10951
- ANSI JOIN
- algoritm
- Algorithm
- 소숫점처리
Archives
- Today
- Total
Cracking Code
[Java] 다형성 (Polymorphism) 본문
다형성이란 하나의 참조 변수가 다른 데이터형을 참조할 수 있는 능력입니다.
다형성
상속 관계에 있으면 다형성을 적용할 수 있고 형변환도 할 수 있습니다.
기본적으로 큰 타입이 작은 타입을 가리키는 구조입니다.
E.g.
public class Main {
public static void main(String[] args) {
Object[] objects = {"홍길동", new Man(), new Emp()};
for (Object o : objects) {
if (o instanceof String) {
System.out.println(o);
}
}
}
}
// 실행 결과
홍길동
Object 는 자바의 최상위 클래스로 모든 클래스는 Object를 상속받아 정의됩니다.
그러므로 String 객체, Man 객체, Emp 객체를 다형성을 적용하여 가리킬 수 있기 때문에
Object 객체 배열 안에 다른 하위 클래스의 객체들을 저장할 수 있게 됩니다.
public class Main {
public static void main(String[] args) {
Object[] objects = {"홍길동", new Man(), new Emp()};
// Man man = objects[1]; // 오류 발생
// 부모 클래스에서 자식 클래스 타입으로 타입 변환은 반드시 명시해야 함
Man man = (Man) objects[1];
System.out.println(man);
}
}
// 실행 결과
Man[name=null, age=0]
부모 클래스 타입으로 자식 클래스 타입을 가리킬 때는 형변환을 생략할 수 있지만
Object 클래스 타입으로 가리키고 있는 Man 객체는 Man 클래스 타입으로 형변환 없이 가리킬 수 없기 때문에
명시적으로 형변환을 해주어야 합니다.
'Java > Java language' 카테고리의 다른 글
[Java] 인터페이스 (Interface) (0) | 2020.08.27 |
---|---|
[Java] 추상 클래스 (Abstract class) (0) | 2020.08.25 |
[Java] 메서드 오버라이딩 (Method Overriding) (0) | 2020.08.13 |
[Java] 상속 (Inheritance) (0) | 2020.08.12 |
[Java] this 키워드 (0) | 2020.08.09 |
Comments