일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mac terminal command
- html charset
- #다차원포인터
- #C++ 연산자함수오버로딩
- #C++ has~a
- border-box
- hyperledger transaction
- html5 new tag
- html multimedia
- #성적관리프로그램
- #JAVASCRIPT
- #자바상속#자바이즈어#is~a
- relative path
- html id
- html code
- #3차원배열
- 하이퍼레저패브릭
- #android activity
- html video
- html youtube
- #binary
- html plug-in
- git flow
- #1차원배열
- html object
- docker example
- 토큰경제
- #2차원배열
- #bubbleSort
- #CallByAddress
- Today
- Total
A sentimental robot
다운캐스팅, Downcasting 본문
public class Day3 {
public static void main(String[] args) {
class Apple {
void func02() {
System.out.println("Apple's func02");
}
}
class Banana extends Apple {
void func01() {
System.out.println("Banana's func01");
}
}
class Orange extends Apple {
void func01() {
System.out.println("Orange's func01");
}
}
Apple apple = new Banana();
apple.func02();
// apple이 자식 Banana클래스 안의 func01를 쓰고 싶을 때! -> Downcasting
Banana banana = (Banana) apple;
banana.func01();
banana.func02();
Orange org = new Orange();
org = (Orange) apple; // ClassCastException
}
}
// 이미 부모 클래스인 Apple 타입으로 Upcasting 되어 있으면 자식클래스(Banana)에 접근할 수가 없다. 자식클래스의 고유의 메소드에 접근하고자 할 때 Downcasting을 사용한다.
class Apple {
void f0() {
System.out.println("0");
}
}
class Banana extends Apple {
void f1() {
System.out.println("1");
}
}
class Orange extends Apple {
void f2() {
System.out.println("2");
}
}
class In {
void f3(Apple a) {
if (a instanceof Apple) {
Apple aa = (Apple) a;
a.f0();
}
if (a instanceof Banana) {
Banana b = (Banana) a; // Downcasting
b.f1();
}
if (a instanceof Orange) {
Orange org = (Orange) a;
org.f2();
}
}
}
public class Day3 {
public static void main(String[] args) {
Apple a = new Apple();
Banana b = new Banana();
Orange org = new Orange();
In d = new In();
d.f3(b); // Upcasting
}
}
'Java' 카테고리의 다른 글
진수에 대해서 (0) | 2018.01.09 |
---|---|
객체참조 (0) | 2018.01.09 |
예외처리, try~catch (0) | 2018.01.09 |
자바에서 대표적인 예외 (0) | 2018.01.09 |
우주에서 랜덤하게 살아남기 (0) | 2018.01.08 |