| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- MIND 2023 #후기
- 엔티티 생명주기
- spring
- 예외
- 엔티티 매니저
- Interface
- 백엔드 로드맵
- form
- html
- 백엔드공부
- tag
- 제로베이스
- static
- GitHub_Actions
- 카카오인가코드받기
- Java
- jenkins
- 인스턴스
- feignClient
- 카카오인증토큰받기
- Docker
- Spring API
- 카카오사용자정보가져오기
- oAuth2
- ci/cd
- 상속
- input
- 백엔드스쿨
- button
- 어떤 개발자?
Archives
- Today
- Total
HiDevelop
InstanceOf 본문
728x90
- Instanceof
- 상속 관계를 바탕으로 형 변환이 가능한지를 묻는 연산입니다.
- Syntax : (object) instanceof (type) /
- object가 type 이거나 type을 상속받는 클래스이면 true를 반환, 그렇지 않으면 false을 반환합니다.
- 모든 클래스는 Object를 상속하기 때문에 항상 true를 반환합니다.
- null 객체에 대해서는 항상 false를 반환합니다.
class Box{
public void simpleWrap() {System.out.println("simple wrap");}
}
class PaperBox extends Box{
public void paperWrap() {System.out.println("paper wrap");}
}
class GoldPaperBox extends PaperBox{
public void goldWrap() {System.out.println("Goldpaper wrap");}
}
public class InstanceOf {
public static void wrapBox(Box box) {
if(box instanceof GoldPaperBox)
((GoldPaperBox)box).goldWrap();
else if(box instanceof PaperBox)
((PaperBox)box).paperWrap();
else
box.simpleWrap();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Box box = new Box();
PaperBox pbox = new PaperBox();
GoldPaperBox gbox = new GoldPaperBox();
wrapBox(box);
wrapBox(pbox);
wrapBox(gbox);
}
}
wrapBox 메소드는 box를 매개변수로 하는 메소드 입니다. Box 클래서 혹은 Box의 하위 클래스로 매개변수 box를 메소드에서 넘겨받지만, 어떤 타입의 클래스인지 메소드 내에서는 알 수 없습니다. 그렇기에 instanceof문을 통해 인스턴스의 타입을 검사하여 적절한 형 변환을 한 뒤에 작업을 실행해야합니다.
- 형 변환을 하는 이유
참조변수 와 실제로 참조 받고있는 인스턴스의 타입이 항상 같지는 않습니다. 그렇기에 instanceof를 통해 형 변환이 가능한지 검사하고, 원하고자 하는 인스턴스의 멤버의 타입으로 참조변수를 형 변환시켜 사용하고자 하는 기능을 사용하기 위해서 입니다. 즉, 인스턴스의 원래기능을 모두 사용하기 위함입니다.
728x90
'Java' 카테고리의 다른 글
| [Java] Object class와 final (0) | 2022.01.29 |
|---|---|
| [Java] 상속의 이점 (0) | 2022.01.24 |
| [Java] 상속4(Overriding) (0) | 2022.01.16 |
| [Java]상속3 (0) | 2022.01.14 |
| [Java] 상속2 (0) | 2022.01.04 |