14. Object
자바에 있는 모든 class의 Super class다.
Java API에 있는 문서에 따르면 이 Class는 Heirachy가 없다.
사용자가 만든 class에도 Object가 extends 되어있고
생성자의 super method는 Object에 있는 생성자를 호출한다.
Object에서 주로 사용 되는 Method는 toString, equals가 있다.
Object는 String과 같은 타 Class에서 이 method들을 overriding하여 응용된다.
확장하지 않는 클래스는 묵시적으로 오브젝트가 확장되어 있다.
=>toString() : 해당 클래스의 상태값을 스트링으로 반환.
이 메소드를 오버라이딩 하여 활용 가능.
스트링 변수에 값을 집어넣고 출력시 이 메소드를 참조하지 않아도 값이 출력된다.
=>equals() : 다른 객체와 같은 데이터를 가지고 있는지 검사한다.
*equals method
해당 Reference type에 있는 field의 값에 대하여 대상의 field의 값과 동일한가 판단하는 Method.
이 Method에 들어갈 Argument의 Data Type은 Object이다.
앞서 말했듯이 모든 Reference Data Type의 Super Class는 Object이므로,
어느 Reference Data Type이든 이 Argument에 Implicit Casting을 통해 대입이 가능하다.
그러나 Primitive Data Type은 불가능하다.
Ex 1 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | String strA = “str”; String strB = “str”; String strC = new String(“str”); String strD = new String(“str”); // strA, strB의 변수선언은 strC와 같으나 작은 차이가 있다. // strA, strB는 같은 Instance를 참조 하지만, // strC, strD는 서로 다른 Instance를 참조하므로 아래와 같은 결과가 나온다. strA == strB // true strA == strC // false strB == strC // false strC == strD // false | cs |
여기서 ==는 “str”이라는 문자가 동일한 것인지 판단하는 것이 아니고
참조된 Instance의 주소값이 같은지 판단하는 것이다.
(equlas method는 Object에서 override되어 모두 true가 나온다.)
*toString Method
해당 Reference type의 상태값을 String으로 출력하는 Method.
모든 Reference type에서 출력 시 이 Method가 내포된다.
추상적인 내용은 “class name @ hash값(16진수)”라는 문자가 출력된다.
String에서도 이 method가 내포되어 있다.
Ex 1 :
1 2 3 4 | public boolean equals(Object obj){ boolean equal = ( this.number == ( (ClassB)obj ).number ); return equal; } | cs |
'Java > Theory' 카테고리의 다른 글
[Java/Theory]16. Data Structure (0) | 2016.05.31 |
---|---|
[Java/Theory]15. StringBuffer, Calander, WrapperClass (0) | 2016.05.31 |
[Java/Theory]13. null, Garbage collection (0) | 2016.05.31 |
[Java/Theory]12. Access Modifier (0) | 2016.05.30 |
[Java/Theory]11. Reference Type Casting (0) | 2016.05.30 |