Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] instanceof 연산자: 객체 타입 확인 본문
Java 프로그래밍에서는 instanceof 연산자를 사용하여 객체가 특정 클래스의 인스턴스인지 확인할 수 있습니다. 이를 통해 프로그램에서 객체의 타입을 확인하고, 그에 따라 적절한 동작을 수행할 수 있습니다.
1. instanceof 연산자 예제
예제 1: 클래스의 인스턴스 확인
다음 예제에서는 instanceof 연산자를 사용하여 객체가 특정 클래스의 인스턴스인지를 확인합니다.
// InstanceOfExample1.java
public class InstanceOfExample1 {
public static void main(String[] args) {
Object obj = "Hello";
if (obj instanceof String) {
System.out.println("obj는 String 클래스의 인스턴스입니다.");
} else {
System.out.println("obj는 String 클래스의 인스턴스가 아닙니다.");
}
}
}
출력 결과: obj는 String 클래스의 인스턴스입니다.
예제 2: 다형성 활용
다음 예제에서는 instanceof 연산자를 사용하여 다형성(polymorphism)을 활용합니다.
// InstanceOfExample2.java
class Animal {
void sound() {
System.out.println("동물 소리를 내다.");
}
}
class Dog extends Animal {
void sound() {
System.out.println("멍멍!");
}
}
class Cat extends Animal {
void sound() {
System.out.println("야옹~");
}
}
public class InstanceOfExample2 {
public static void main(String[] args) {
Animal[] animals = {new Dog(), new Cat()};
for (Animal animal : animals) {
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.sound();
} else if (animal instanceof Cat) {
Cat cat = (Cat) animal;
cat.sound();
}
}
}
}
출력 결과:
멍멍!
야옹~
예제 3: 인터페이스의 구현 확인
인터페이스의 구현 여부도 instanceof 연산자로 확인할 수 있습니다.
// InstanceOfExample3.java
interface Drawable {
void draw();
}
class Circle implements Drawable {
public void draw() {
System.out.println("원을 그립니다.");
}
}
public class InstanceOfExample3 {
public static void main(String[] args) {
Circle circle = new Circle();
if (circle instanceof Drawable) {
circle.draw();
} else {
System.out.println("Drawable 인터페이스를 구현하지 않았습니다.");
}
}
}
출력 결과: 원을 그립니다.
예제 4: null 체크
null인 경우에도 instanceof 연산자를 사용할 수 있습니다.
// InstanceOfExample4.java
public class InstanceOfExample4 {
public static void main(String[] args) {
String str = null;
if (str instanceof String) {
System.out.println("str은 String 클래스의 인스턴스입니다.");
} else {
System.out.println("str은 null입니다.");
}
}
}
출력 결과: str은 null입니다.
'프로그래밍' 카테고리의 다른 글
[Java/자바] 변수의 유효 범위 (Variable Scope) (0) | 2024.03.19 |
---|---|
[Java/자바] printf()를 사용한 문자열 포맷 출력 (0) | 2024.03.19 |
[Java/자바] Float과 Byte 배열 간의 변환 (0) | 2024.03.18 |
[Java/자바] Number 클래스: 숫자 처리를 위한 다양한 기능 (0) | 2024.03.18 |
[Java/자바] 해시 테이블(HashTable) 구현 (0) | 2024.03.18 |