Java/Theory

[Java/Theory]14. Object

양승길 2016. 5. 31. 11:46

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