앱 만들기/안드로이드 study

자바의 기술 # instanceof 사용방법.

나도처음이야 2020. 9. 6.

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 가 사용될 수 있습니다.

이는 다음 포스팅에서 다루어 보겠습니다.

감사합니다. ^^

 

 

- 여담으로 

   프로그램 언어가 한글로 만들어 졌다면 하는 생각을 해본다.

   프로그램 언어들의 기본 바탕이 영어다 보니, 그들의 사고와 생각 들이 

   프로그램 언어에도 모두 녹아져 있는거 같다.

 

   한글이었다면, 

   아마도 우리나라에서도 빌게이츠 와 같은 인물이 벌써 여러명 나오지 않았을까? 

   한글 랭귀지를 꿈꾸어 본다. ㅋㅋㅋ

 

반응형

댓글