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 정의해 줘야 사용 가능!!!!!!!
생성자와 차이
-> 생성자는 초깃값을 가지고 새로 생성하는 것이므로 다르다는 것 인식
'Programming 언어 > JAVA' 카테고리의 다른 글
15. 자바와 자료구조 (0) | 2023.08.31 |
---|---|
14. String 클래스 및 Class 클래스 (0) | 2023.08.30 |
12. 인터페이스(interface) (0) | 2023.08.30 |
11. 추상 클래스의 의미 및 응용 (0) | 2023.08.30 |
10. 메서드 재정의(overring), 다형성, 다운 캐스팅 및 instanceof (0) | 2023.08.30 |