instanceof 는 말 그대로, ~의 인스턴스 인지를 구별해주는 역할을 한다.
인스턴스 구별 에 따라, true, false 를 리턴해준다.
예제 코드를 통해서 조금 더 살펴 볼까요?
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
32
33
|
public class Instanceof {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son son = new Son();
Daddy daddy = new Daddy();
//Son son2 = (Son) new Daddy();
if(son instanceof Daddy) {
System.out.println(" Daddy 의 인스턴스 는 son 이다");
}
if(daddy instanceof Son) {
System.out.println(" Son 의 인스턴스 는 daddy 이다");
}
}
}
class Daddy{
}
class Son extends Daddy{
}
|
cs |
아빠 와 아들 클래스를 만들어 보았습니다.
아들은 당연히 아빠 클래스를 상속받았고요, 그런 다음 instanceof 가 어떻게 동작하는지 살펴봅니다.
if(son instanceof Daddy) {
System.out.println(" Daddy 의 인스턴스 는 son이다");
}
위 코드는 true 입니다.
Daddy d = new Son(); 이 구문이 실행 될 수 있다는 의미입니다.
메모리에 만들어진 Son() 이란 영역에는 Daddy 가 포함 되어있기에,
Daddy 의 인스턴스 변수 d 로 가리킬 수 있습니다.
하지만, 하기는 false 입니다.
7번 라인 Son son2 = new Daddy(); 컴파일 에러가 나는것과 같습니다.
if(daddy instanceof Son) {
System.out.println("Son 의 인스턴스 는 daddy 이다");
}
물론, Son son2 = (Son)new Daddy(); 으로 하면 컴파일은 되지만
실행시 에러가 발생합니다.
즉, Daddy() 의 메모리 변수에는 Son 영역이 없기에 당연히 참조가 불가 합니다.
그럼 , instanceof 는 앱 개발시 언제 사용 될까요?
A,B,C 화면을 만들었고, B 에만 어떤 특정한 기능을 넣어 둡니다.
그리고, 해당 특정 기능을 가지고 있는지 여부를 판별 할때 역시 instanceof 가 사용될 수 있습니다.
이는 다음 포스팅에서 다루어 보겠습니다.
감사합니다. ^^
- 여담으로
프로그램 언어가 한글로 만들어 졌다면 하는 생각을 해본다.
프로그램 언어들의 기본 바탕이 영어다 보니, 그들의 사고와 생각 들이
프로그램 언어에도 모두 녹아져 있는거 같다.
한글이었다면,
아마도 우리나라에서도 빌게이츠 와 같은 인물이 벌써 여러명 나오지 않았을까?
한글 랭귀지를 꿈꾸어 본다. ㅋㅋㅋ
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
안드로이드의 기술 # 버튼 이벤트 처리. (4) | 2020.09.11 |
---|---|
안드로이드의 기술 #Fragment 백키 처리하기. (6) | 2020.09.08 |
안드로이드의 기술 # android.content.res.Resources$NotFoundException: String resource ID # 에러 가 날때 (4) | 2020.09.04 |
안드로이드의 기술 # Handler 타이머 구현하기- 정지 기능 (10) | 2020.09.03 |
안드로이드의 기술 # Handler 타이머 구현하기 (2) | 2020.09.02 |
댓글