티스토리 뷰

instanceof 란? 객체의 타입을 알아내는 키워드 입니다.


A instanceof B : A객체가 B 클래스의 객체가 맞으면 true를 반환하고, 틀리면 false를 반환한다.


instanceof 키워드에 대한 기본적인 이론을 마치고 실습을 통해 공부하겠습니다.



기본적인 instanceof 키워드에 대한 이론과 사용 방법을 담은 메인(main) 클래스

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
public class ExampleInstanceof {
    public static void main(String[] args) {
        A a1 = new B();
        A a2 = new C();
         
        B b1 = new B();
         
        // 객체가 무엇으로 이루어져 있는지 판단하는 instanceof 연산자
        // A instanceof B => A 객체가 B 클래스로 이루어져 있는가? (= 부를 수 있는가?)
        // instanceof 키워드는 is-a 관계가 성립한다면 true 반환
         
        if(a1 instanceof B){
            System.out.println("a1 객체는 B클래스라고 부를 수 있다.");
        }
        if(a2 instanceof C){
            System.out.println("a2 객체는 C클래스라고 부를 수 있다.");
        }
        if(b1 instanceof A){
            System.out.println("b1 객체는 A클래스라고 부를 수 있다.");
        }      
    }
}
class A {}
class B extends A {}
class C extends B {}
class D extends B {}



배열 이란? 같은 타입의 변수를 하나의 묶음으로 모아 놓은 것이다.

자바에서의 배열은 객체이다.


* 사용하는 이유: 많은 양의 동일한 타입의 데이터를 쉽게 관리하기 위하여 사용한다.



˚ 배열 사용시 for - each문 (반복문)을 사용한다.

1
2
3
for(자료형 변수: 배열 이름){
     // 반복문장
}

반복이 진행되면서 변수에는

배열의 첫 번째 원소부터 마지막 원소까지 차례대로 대입


˚ 사용자가 배열의 크기 지정

1
2
3
4
int size;
Scanner sc = new Scanner(System.in);
size = sc.nextInt();                             // int(정수)형 타입으로 입력받는다.
int[] a = new int[size];                       // 변수로 배열 크기 지정

자바에서는 배열의 크기를 사용자가 입력할 수도 있다.



간단하게 배열과 for-each문에 대해 알아보았고, 실습을 통해 공부하겠습니다.


배열을 사용하고, for - each문을 사용한 메인 클래스

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
public class ExampleArrayForEach{
    public static void main(String[] args) {
        // 배열 만들기
        int[] score_arr = new int[10];
 
        // score_arr도 객체이기 때문에 멤버변수나 메소드를 사용할 수 있다.
        // * length : 배열의 길이
        for (int i = 0; i < score_arr.length; i++) {
            score_arr[i] = (i + 1) * 10;
        }
 
        for (int i = 0; i < score_arr.length; i++) {
            System.out.println(score_arr[i]);
        }
 
        // for - each
        // 자료구조에서 원하는 데이터를 뽑아낼 때 많이 사용된다.
        // 매우 중요하다.
        // 종료 시기 : 더이상 꺼낼 데이터가 없을 때 종료된다.
 
        // for(변수 : 자료구조){
        // 자료구조에 있는 아이템을 순서대로 하나씩 꺼내서 변수에 대입시킨다.
        // }
 
        // 모든 데이터를 꺼내서 검사할때 마다 많이 사용된다.
        System.out.println();
        System.out.println("for each 문장");
        for (int i : score_arr) {
            System.out.println(i);
        }
    }
}





다형성에 대해 공부하였으면 Upcasting, Downcasting을 알고있습니다.


배열을 사용하여 shape 형태의 배열로 만들어 놓은 것에 Upcasting과 Downcasting을 사용하여 

Circle, Square 객체를 만들었고, instanceof 키워드를 사용하여 알아보도록 하겠습니다.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class ExampleArrayInstanceof {
    public static void main(String[] args) {
        Shape[] arr_shape = new Shape[5]; // Shape형태의 배열로 만든것이다. 객체를 생성한 것이 아니기
                                            // 때문에 컴파일 에러가 없다
 
        // UpCasting이 일어나면서 가능하다.
        arr_shape[0] = new Circle(); // 0번째 Shape = new Circle();
        arr_shape[1] = new Square(); // 1번째 Shape = new Square();
        arr_shape[2] = new Circle(); // 2번째 Shape = new Circle();
        arr_shape[3] = new Square();
        arr_shape[4] = new Circle();
         
        // 객체가 무엇으로 이루어져 있는지 판단하는 instanceof 연산자
        // A instanceof B => A 객체가 B 클래스로 이루어져 있는가? (= 부를 수 있는가?)
        // instanceof 키워드는 is-a 관계가 성립한다면 true 반환
         
        for(Shape s : arr_shape){
            if(s instanceof Circle){
                Circle c = (Circle)s;
                System.out.println(c);
            }else{
                Square sq = (Square)s;
                System.out.println(sq);
            }
        }
        System.out.println();
         
        for(Shape s: arr_shape){
            System.out.println(s);
        }
    }
}
 
abstract class Shape {   }
 
class Circle extends Shape {
    @Override
    public String toString() {
        return "원입니다";
    }
}
 
class Square extends Shape {
    @Override
    public String toString() {
        return "사각형입니다";
    }
}
반응형
LIST
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
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
글 보관함