자바의 모든 클래스의 최상위 부모는 Object클래스이다

Object클래스의 toString()메소드는 객체의 주소를 String으로 반환해주는 메소드다
Object클래스의 equals()메소드는 두 객체간의 인스턴스비교 즉 주소값 비교,주소가 같으면 true,다르면 false반환

[Object클래스의 String toString()메소드]
       :객체의 주소문자열로 반환
  패키지명.클래스명@주소(16진수)
 ※toString()메소드 오버라이딩 시 반드시 hashCode()메소드도 오버라이딩하자  
   [Object클래스의 boolean equals()메소드]
        : 비교 클래스의 인스턴스변수.equals(대상클래스의 인스턴스변수)
          두 객체의 주소비교


class MyClass{
             int data;

인자생성자
         public MyClass(int data) {
                            this.data = data;
                               }////


실제 저장된 데이타가 반환되도록 만들기 

즉  Object로부터 상속받은 toString()메소드 오버라이딩(재정의)하기! (주소값말고)

    tip.이클립스에서 우클릭 source -> 오버라이딩소스 어쩌구 클릭하면 부모의메소드 바로 보여줌 그거로 내용만 바꾸면 아주 간편하게 오버라이딩 할 수 있음!!


@Override
         public String toString() {
                    return String.valueOf(data);    =>문자를 숫자로!!  요렇게 내용만 바꿈
                                  }
실제 저장된 데이터를 비교하도록  equals(Object)메소드  오버라이딩하기!(주소비교말고)

@Override
         public boolean equals(Object obj) {
                   if(obj instanceof MyClass) {           =>타입이 myclass면   요것도 이렇게 내용만 바꿈!
                         MyClass mc = (MyClass)obj;
                          if(this.data == mc.data)return true;
                           else return false;
                            }
                      return false;                        =>타입이 myclass가 아닐경우
                 }

 

String getAddress() {
                       return super.toString();
                              }
}

class Point{
         int x,y;
        public Point(int x, int y) {
                  this.x = x;
                  this.y = y;
                                 }
문제 x=10,y=20 처럼 반환하도록 toString()메소드를 오버라이딩하기
@Override
public String toString( ) {
                 return String.format("x=%s,y=%s",x,y);
                              }

문제 저장된 x좌표와 y좌표가 같은지 비교하도록 equals()메소들를 오버라이딩 하여라  
@Override
        public boolean equals(Object obj) {
              if(obj instanceof Point) {
                       Point pt = (Point)obj;
                       if(this.x==pt.x  && y==pt.y)
                               return true;
                            }
                        return false;   // 타입이 point가 아닌경우
                      }
       }

public class ObjectClass {

public static void main(String[] args) {
MyClass mc1 = new MyClass(10);
MyClass mc2 = new MyClass(10);
System.out.println("[두 객체의 toString()호출]");
System.out.println(mc1);
System.out.println(mc1.toString());
System.out.println(mc1.getClass().getName()+'@'+Integer.toHexString(mc1.hashCode()));
System.out.println(mc2);
System.out.println(mc2.toString());
System.out.println(mc2.getClass().getName()+'@'+Integer.toHexString(mc2.hashCode()));



System.out.println("[두 객체를 equals()메소드로 비교]");
System.out.println(mc1 == mc2 ? "Same":"Different");   //주소비교
System.out.println(mc1.equals(mc2)? "같다":"다르다"); //실제값 비교로 오버라이딩
System.out.println(mc1.getAddress());
System.out.println(mc2.getAddress());


Point point1 = new Point(10,20);
Point point2 = new Point(10,20);
System.out.println("[toString 호출]");
System.out.println(point1);
System.out.println(point2);
System.out.println("[equals() 호출]");
System.out.println(point1.equals(point2));

'학원 > JAVA' 카테고리의 다른 글

10/5 15-2 figureApp (추상화연습)  (1) 2022.10.05
10/5 15-1 추상클래스  (0) 2022.10.05
10/4 14-8 Type Casting  (0) 2022.10.04
10/4 14-7 instanceof 연산자  (0) 2022.10.04
10/4 14-6 이질화와 동질화  (0) 2022.10.04

+ Recent posts