[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
Object 클래스
- 모든 자바 클래스가 상속하는 최상위 클래스
- 아무런 메소드를 가지지 않는 클래스를 생성한다면 자동으로 Object클래스를 상속 받음.
- 모두 11개의 메소드를 정의하고 있으며 이 메소드들은 자바의 모든 클래스가 갖는 기능임.
- 자바의 모든 클래스가 상속 받아 갖는 Object 클래스 메소드에 대한 목적과 기능을 이해하는 것이 중요
- Object 클래스를 통해 상속 받는 메소드의 의미를 이해해야 그 의미에 맞게 재정의 할 수 있음.
- finalize : 생성자를 통해 초기화를 진행한 후 clean up 기능을 이 메소드를 통해 close 해야 했는데 현재는 다른 방법으로 진행하여 따로 사용하지않는 메소드
(존재는 하지만 언젠가 사라질 메소드이기 때문에 사용하면 안됨) - getClass : 어려움 / 자바의 reflection / 메모리에 올라간 인스턴스를 가지고 그 클래스를 유추해내는 방법 / 이런 게 있다..
- finalize : 생성자를 통해 초기화를 진행한 후 clean up 기능을 이 메소드를 통해 close 해야 했는데 현재는 다른 방법으로 진행하여 따로 사용하지않는 메소드
toString 메소드
- 해당 클래스에 대한 설명을 문자열 타입으로 반환하는 메소드
- 자바의 모든 클래스는 스스로에 대한 정보를 읽기 쉬운 형태로 제공할 수 있으며 이 기능이 toString() 메소드
- 클래스를 정의할 때 그 클래스를 나타내는 주요 정보를 이용해 toString() 메소드를 재정의
equals, hashCode 메소드
- 자바의 모든 클래스는 비교가 가능해야 하며, 비교는 해당 클래스의 속성을 기준으로 함.
- 자바에서 비교는 동일 (identity) 비교와 동등 (equality) 비교로 구분
- equals() 메소드는 인스턴스 객체와 파라미터로 전달되는 객체를 같은지 비교하여 그 결과를 반환.
- 속성이 같으면 같은 객체로 보겠다 하려면 equals 와 hashCode 메소드를 재정의 해줘야함 (Generate)
- 그냥 이러한 내용이 있다 정도로..
- 해시코드 (hashCode)는 객체를 식별하는 정수 값을 의미하며 hashCode() 메소드는 이 정수 값을 반환하는 메소드
- equals() 메소드는 인스턴스 객체와 파라미터로 전달되는 객체를 같은지 비교하여 그 결과를 반환.
clone 메소드
- 인스턴스 객체의 복제를 위한 메소드로 해당 인스턴스 객체를 복사하여 그 참조값을 반환
- 클래스의 복제를 가능하게 하기 위해서는 Cloneable 인터페이스를 구현해야 함
- Cloneable 인터페이스를 구현하지 않은 클래스의 인스턴스의 clone() 메소드를 호출하면 ClineNotSupportedException 예외 발생
- 객체의 복사는 단순히 같은 참조 정보를 복사하는 형태와 동일한 객체의 인스턴스를 복사하는 것의 차이를 이해해야 함.
- 같은 참조 정보를 복사하는 경우
- 원본 인스턴스를 같이 참조하므로 복제본을 수정시 원본이 직접적으로 수정이 가해짐.
- 객체의 인스턴스를 복사하는 경우
- 참조 변수의 인스턴스까지 따로 복사가 되므로 원본에 수정이 가해지지 않음
- 얕은 복제 (Shallow Copy)
- 깊은 복제 (Deep Copy) = 완전한 복제
- 참조 변수의 인스턴스까지 따로 복사가 되므로 원본에 수정이 가해지지 않음
- 같은 참조 정보를 복사하는 경우
- Object 클래스의 clone() 메소드는 protected 접근 권한을 갖고 있으며 이를 재정의하는 클래스는 이를 public 접근 권한으로 재정의하여 어디서나 복제가 가능하도록 함.
2022.08.17 - [JAVA] - [JAVA] objects.equals() 정리
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] 배열 Array (0) | 2022.11.07 |
---|---|
[JAVA][기초] 추상 클래스 abstract class 와 인터페이스 interface (0) | 2022.10.12 |
[JAVA][기초] up-casting / down- casting 과 다형성 polymorphism (0) | 2022.10.11 |
[JAVA][기초] 상속 과 오버라이딩 Overriding (0) | 2022.10.07 |
[JAVA][기초] 패키지 Package & 패키지 구성 (0) | 2022.10.07 |