본문 바로가기

Programming 언어/JAVA

13. Object 클래스 및 메서드 활용

1. Object 클래스

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

1. java.lang.Object 클래스

2. 모든 클래스는 Object 클래스를 상속 받고, Object 클래스의 메서드 중 일부는 재정의 후 사용 가능

3. 컴파일러가 extends Object를 추가한다.

java.lang 패키지

1. 프로그래밍시 import 하지 않아도 자동으로 import 된다.(import.java.lang)

2. 많이 사용하는 기본 클래스들이 속한 패키지(Object 포함됨) -> String, integer, System등

2. Object 클래스의 메서드 활용

toString() 메서드

1. 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임

2. String 이나 integer 클래스는 이미 재정의 되어 있음

ex) toString() 메서드 재정의 예

원래는 이렇게 new String('x') 해서 만들어진 객체가 toString 코드를 입력하면 x 값이 나온다.

근데 이렇게 그냥 toString()을 오버라이딩해서 내가 원하는대로 만들 수 있다.

System.out.print() or println()함수를 출력하면 객체의 toString 메서드가 자동으로 호출 -> () 안에는 객체 이름

즉, System.out.println(member) == member.toString() 

equals() 메서드

1. 두 인스턴스의 주소 값을 비교하여 true/false를 반환

2. 재정의하여 두 인스턴스가 논리적으로 동일함의 여부를 구현

3. 인스턴스가 다르더라도 논리적으로 동일한 경우 true를 반환하도록 재정의 할 수 있음

hashCode() 메서드

1. hashCode()는 인스턴스의 저장 주소를 반환함

2. 힙 메모리에 인스턴스가 저장되는 방식이 hash 방식

3. hash : 정보를 저장, 검색하는 자료구조

4. 자료의 특정 값(키 값)에 대한 저장 위치를 반환해주는 해시 함수를 사용

' == ' 사용

equals() 사용

서로 개별적인 객체이므로 주소가 다름 -> false

만일 true로 나오게 하고 싶다면?? -> 오버라이딩으로 논리적 재정의를 이용하자

obj가 Student 인지 확인 → 논리적으로 같음을 재정의

hashCode()  사용

당연히 주소가 다르므로 해쉬값이 다르게 나온다.

// identityHashCode() //

identiyHashCode()를 사용하면 진짜 해쉬코드를 찾을 수 있다.

clone() 메서드

1. 객체의 원본을 복제하는데 사용하는 메서드(private까지)

2. 복잡한 생성 과정을 반복하지 않고 복제 가능

3. clone() 메서드를 사용하면 객체의 정보(멤버 변수등)가 동일한 또 다른 인스턴스가 생성되는 것이므로, 객체 지향 프로그램에선 정보 은닉, 객체 보호 관점에서 위배될 수 있음

4. 해당 클래스에서 clone() 메서드의 사용을 허용해 준다는 의미로 cloneable 인터페이스 명시

위와 같이 implements cloneable 정의해 줘야 사용 가능!!!!!!!

생성자와 차이

-> 생성자는 초깃값을 가지고 새로 생성하는 것이므로 다르다는 것 인식