[Java] Object 클래스

YoungMinKim·2020년 11월 8일
0
post-thumbnail

Object Class

Object

protected void finalize() throws Throwable

  • JVM에 의해 가비지 컬렉션이 수행될 때 호출되는 Method.
  • Overriding을 통해 Object Class의 finalize()를 호출한다.
  • 반드시 finalize() Method가 호출 되지는 않는다.
  • finalize() Method는 실제로 많이 사용이 되지 않는다.
public static void main(String [] args){
		Person p1 = new Person("Yoon");
		Person p2 = new Person("Park");

		p1 = null;
		p1 = null;

		// System.gc(); **가비지 컬렉터 수행 부탁**
		// System.runFinalization(); **가비지 컬렉터 수행 부탁**

		System.out.println("end of Program");
}

// 참조 되지 않는 인스턴스라 해서 반드시 가비지 컬렉션이 수행 되지 않는다.

Instance의 비교 equals Method

equals (String Class의 equals가 아니다)

[ == ]

  • 왼쪽에 있는 피 연산자와 오른쪽에 있는 피 연산자가 똑같은 Instance를 참조하는가??
  • 기본적으로 Instance를 비교할 때는 위 연산자를 사용 한다.

[ Object's equals ]

  • Overriding을 통해 사용.
  • 개인적으로 많이 사용 되지는 않을 듯.

String Class equals Method

String Class equals

  • 내용 비교를 하도록 적절하게 Overriding이 되어있다.

Clone Method

Clone

  • Clone Method 호출 시 Instance가 그대로 복사됨.
  • 모든 Instance는 Object Class의 Clone Method를 가지고 있다.
  • Class 정의 시, clone Method의 호출을 허용 하려면 Cloneable Interface를 구현 해야 한다.
  • Cloneable Interface는 구현해야 할 추상 Method가 없는 Maker Interface다.

Clone Method 호출의 예

clone Method

  • Overriding을 통해 Method 정의를 할 시 접근 수준 지시자를 변경 할 수 있다.
  • public 으로 선언 된 이유는, Object Class는 java.lang package에 속해 있기 때문이다.
  • Object 반환 형을 변경 할 수 있다.

Shallow Copy

Shallow Copy

Deep Copy

profile
https://ym1085.github.io

0개의 댓글