본문 바로가기
백엔드/Java

<FAST CAMPUS>자바 웹개발-객체지향 프로그래밍

by 고구마는호박고구마 2021. 1. 18.

<객체지향 프로그래밍 43장~47장>

 

 

Object 클래스 

      Object 클래스

        - 자바에서 쓰는 기본적인 클래스 

          모든 클래스의 최상위 클래스

          java.lang.Object 클래스

         

         모든 클래스는 Object클래스에서 상속 받음

         모든 클래스는 Object클래스의 메서드를 사용할 수 있음

         모든 클래스는 Object클래스의 일부 메서드를 재정의 하여 사용할 수 있음

 

     Object클래스의 주요 메서드 ( 빨강 박스안 메서드는 주로 오버라이딩 하여 사용

 

  1. toString() 

@15db9762 <- 메모리주소 해쉬코드가 출력이된다.

 

<toString 메서드로 설정>  어떤 객체의 정보를 String 형태로 표현해야 할 때 사용

String 클래스안에 toString 메서드가 따로 정의가 되어서. (주소가 출력이 안되고 배열의 문자가 출력)

    

toString 메서드 설정후 (메모리 주소 - > 저자하고 제목이 출력 ) 

 

 

 

  2.equals() 메서드 

     두 객체의 동일함을 논리적으로 재정의 할 수 있음.

 

      물리적 동일함 : 같은 주소를 가지는 객체

      논리적 동일함 : 같은 학번의 학생, 같은 주문  번호의 주문

 

      물리적으로 다른 메모리에 위치한 객체라도 논리적으로 동일함을 구현하기 위해 사용되는 메서드

 

 

 

 

String 클래스 같은 경우 문자열이 같은 경우 true를 반화하도록 equals 메서드가 재정의 되어 있다. 재정의 되지 않은 equals 메서드는 주소를 비교하는거임.

 

 

equals 메서드로 받은 매개변수는 Object 형(상위)으로 받기 때문에 instanceof로 다운캐스팅을 하고 비교를 해준다.

 

3.hashCode() 메서드 

   - 메모리 주소값 = hashCode()(10진수로)

   - hashCode() 메서드의 반환 값 : 인스턴스가 저장된 가상머신의 주소를 10진수로 반환

   

     두 개의 서로 다른 메모리에 위치한 인스턴스가 동일하다는 것은?

         - 논리적으로 동일 : equals() 반환값이 true 

         - 동일한 hashCode 값을 가짐 : hashCode() 의 반환 값이 동일

 

    hashCode를 코딩할 때 equals의 멤버를 사용

 

 

  4.clone() 메서드

    - 객체의 복사본을 만듦 ( 인스턴스 값을 동일하게 하여 만듬

    - 기본 틀으로 부터 같은 속성 값을 가진 객체의 복사본을 생성할 수 있음

 

클론메서드를 오버라이딩 하고 클론메서드는 Object형을 반환하므로 받을 때는 다시 Book으로 다운캐스팅 하고 사용을 한다. 그런데 오류가 뜨는 이유는? 

                           오류가 뜨는 이유는 clone 복제를 할 때는 복제가 가능하다는 명시를 해줘야한다.

 

implements 로 명시를 해준다.

 

Class 클래스 

 

    자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성됨

    class 파일에는 객체의 정보 (멤버변수, 메서드, 생성자등) 가 포함되어 있음

    Class 클래스는 컴파일된 class파일에서 객체의 정보를 가져올 수 있음 

 

    Class 클래스 가져오는 3가지 방법.

 

 

댓글