package classes;
class A {
void abc(){
System.out.println("Hello"); // ---> 그리고 이값은 왜 출력이 안되는지하구요
}
}
class B extends A{
}
public class InstanceOf{ /// ---------------------> 이것에 대한 개념
public static void main(String args[]){
B b = new B();
if(b instanceof B){
System.out.println("b is instance of B.");
}
if(b instanceof A){
System.out.println("b is instance of A.");
}
if(b instanceof Object){
System.out.println("b is instance of Object."); // -------> Object에 역활 ....
}
}
}
위에 질문 사항에 대해 문의 드립니다. 고수님들 자세한 답변 기달리겠습니다.
--------------------
void abc(){
System.out.println("Hello"); // ---> 그리고 이값은 왜 출력이 안되는지하구요
}
System.out.println("Hello"); // ---> 그리고 이값은 왜 출력이 안되는지하구요
}
위 문장이 출력되기 위해서는 abc()를 호출해야합니다.
즉, 위 코드에서는
B b = new B();
b.abc();// <<== 이 구문이 필요합니다.
메서드는 호출되어야만 실행이 됩니다.
그럼 instanceOf에 대해 설명드리겠습니다.
자바의 구조는 Object로 이뤄져 있습니다.(이유는 뒤에 설명드리겠습니다)
b = new B();
이와 같은 형태를 인스턴스화 한다고 합니다.
이처럼 인스턴스화 된 변수가 해당 객체에 포함되는지 확인하기 위해
instanceOf를 사용합니다.
예제는 상속 관계에 있는 instanceOf의 개념에 대한 설명인데요
앞에서 말씀드린 자바는 Object로 이뤄져있다는 설명을 드립니다.
public class A{ ... }
이 것은
public class A extends Object{ ... }
이 문장이 생략된 문장입니다.
즉, 모든 클래스의 최상위 클래스는 Object라는 말이 성립됩니다.
그러므로
Objcet를 상속받은 A,
A를 상속받은 B,
이런 B의 인스턴스 b는
B의 인스턴스이며,
A의 인스턴스이자
Object의 인스턴스인 것입니다.
설명하면서도 어렵네요^^;
개념만 잡으시면 어렵지 않을거라 생각됩니다.
도움이 되셨습니까?
'IT > 자바' 카테고리의 다른 글
HashSet과 TreeSet (로또 프로그램) (0) | 2018.05.14 |
---|---|
제네릭 타입 설명 (0) | 2018.05.14 |
익명클래스 사용방법 (0) | 2018.05.12 |
API와 API 문서 보는 법 (0) | 2018.05.12 |
새내기 개발자의 JUnit 여행기 (0) | 2018.05.11 |