티스토리 뷰
instanceof 란? 객체의 타입을 알아내는 키워드 입니다.
A instanceof B : A객체가 B 클래스의 객체가 맞으면 true를 반환하고, 틀리면 false를 반환한다.
instanceof 키워드에 대한 기본적인 이론을 마치고 실습을 통해 공부하겠습니다.
기본적인 instanceof 키워드에 대한 이론과 사용 방법을 담은 메인(main) 클래스
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문 (반복문)을 사용한다.
for(자료형 변수: 배열 이름){ // 반복문장 }
반복이 진행되면서 변수에는
배열의 첫 번째 원소부터 마지막 원소까지 차례대로 대입
˚ 사용자가 배열의 크기 지정
int size; Scanner sc = new Scanner(System.in); size = sc.nextInt(); // int(정수)형 타입으로 입력받는다. int[] a = new int[size]; // 변수로 배열 크기 지정
자바에서는 배열의 크기를 사용자가 입력할 수도 있다.
간단하게 배열과 for-each문에 대해 알아보았고, 실습을 통해 공부하겠습니다.
배열을 사용하고, for - each문을 사용한 메인 클래스
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 키워드를 사용하여 알아보도록 하겠습니다.
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
'프로그래밍 > Java' 카테고리의 다른 글
자바 ! 컬렉션 프레임워크 ( Collection Framework , List, ArrayList, HashSet, TreeSet, HashMap, Iterator) (0) | 2017.05.14 |
---|---|
자바 ! 제네릭( Generic ) (0) | 2017.05.13 |
자바 ! 사용자 정의 예외처리 ( Exception, RuntimeException, try ~ catch ~ finally ) (0) | 2017.05.09 |
자바 ! 예외처리 ( Exception , try ~ catch ~ finally) (0) | 2017.05.08 |
자바 ! 다형성 ( Polymorphism , Upcasting , Downcasting ) (0) | 2017.05.05 |
댓글