if (piece instanceof Empty) {
return;
}
piece 객체가 Empty라는 클래스 타입인지 확인하는 메서드
public boolean isSamePiece(Object piece1, Object piece2) {
return piece1.isInstance(piece2);
}
piece가 piece2와 같은 타입의 객체인지 확인하는 메서드
단점:
- instanceof를 사용하는 경우, 각 객체가 무엇인지, 어떤 점수를 돌려주어야 하는지 불필요한 외부의 객체가 그 정보를 알게 됨
- 객체 추가 시, 새로운 메서드를 만들어주기 위해 사용되고 있는 모든 함수를 찾아가서 고쳐야 함. -> 객체의 확장에는 열려있고, 변화에는 닫혀있도록 해야한다는 개방-폐쇄 원칙(OCP) 에 위반
- instanceof의 경우 알맞은 타입을 찾을 때까지 컴파일 시에 모든 타입을 돌며 검사해야 -> 느림
그럼에도 특정 자료형의 타입을 판별하는 경우는 필요할 수 있다!
객체가 가진 상태나 행위 - 다른 이가 사용하거나 보지 못하도록 숨기는 것
각 타입에 필요한 구현을 각 객체에 하면 됨
-> 다형성을 이용한 구현을 하면 if 분기문이 많이 필요 없다.