switch
JAVA OOP 객체지향 프로그래밍 [3. 다형성] 본문
하나의 객체가 여러 형태를 가질 수 있는 것
자바에서 다형성은 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것이다.
즉 상위 클래스 타입의 참조 변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용한 것임
매서드 오버 라이딩과 메서드 오버 로딩 또한 다형성의 한 예시라고 볼 수 있음
참조 변수의 타입 변환
1. 서로 상속관계에 있는 상위 클래스 - 하위 클래스 사이에만 타입 변환이 가능
2. 하위 클래스 타입에서 상위 클래스 타입으로의 타입 변환(업 캐스팅)은 형 변환 연산자(괄호)를 생략 가능
3. 반대로 상위 클래스에서 하위 클래스 타입으로 변환(다운 캐스팅)은 형 변환 연산자를 반드시 명시
참조 변수의 타입 변환은 서로 상속관계에 있는 관계에서는 양방향으로 자유롭게 수행 가능함
instanceof 연산자
참조 변수의 타입 변환(캐스팅)이 가능한지 여부를 알려주는 문법임
ex) 참조 변수 instanceof 타입
다형성 활용 예시 ex..)
public class Ex {
public static void main(String[] args) {
User user = new User();
user.shot(new Ak47());
user.shot(new M16());
sout("");
}
}
class Gun {
int bullet;
public Gun(int bullet) {
this.bullet = bullet;
}
}
class Ak47 extends Gun {
public Ak47() {
super(1);
}
}
class M16 extends Gun {
public M16 {
super(2);
}
}
class User {
int bullet = 10;
void shot(Gun gun) {
if (bullet < gun.bullet) {
sout("총알부족");
return;
}
bullet = bullet - gun.bullet;
sout(gun + "fire");
}
}
'java' 카테고리의 다른 글
JAVA 제네릭 (0) | 2022.05.19 |
---|---|
JAVA OOP 객체지향 프로그래밍 [4. 추상화] (0) | 2022.05.13 |
JAVA OOP 객체지향 프로그래밍 [2. 캡슐화] (0) | 2022.05.12 |
JAVA OOP 객체지향 프로그래밍 [1. 상속] (0) | 2022.05.12 |
JAVA 자바의 특징 (0) | 2022.05.04 |
Comments