본문 바로가기

언어/JAVA

12장 object

java.lang 패키지

java.lang 패키지는 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합이다.

자바에서는 java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있다.

 

java.lang.Object 클래스

모든클래스에는 부모클래스가 있다.

자바에서는 기본적으로 아무런 상속을 받지않으면, java.lang.object(일명 object클래스)를 확장한다.

Object 클래스는 모든 자바 클래스의 최상위클래스다.

public class InheritanceObject {
	public static void main(String[] args) throws Exception{
    	InheritanceObject object = new InheritanceObject();
        System.out.println(object.toString);
    }
}

위의 예제를 보면 main()메소드 외에 선언되어있는 메소드가 전혀없지만 Object클래스에 있는 toString()이라는 메소드를 호출한 것을 볼 수있다.

 

그렇다면 extends를 사용하여 부모클래스를 상속받을 때에는 어떻게 될까?

자바는 한번에 이중상속은 할 수없지만, 여러 단계로 상속을 받을 수있다. 

Object클래스 상속 참고용

위의 그림표를 보면 부모 클래스는 Object클래스를 상속받은 것을 알 수 있다. 

부모 클래스에서 Object를 상속받았으므로 Child클래스는 자동으로 Object클래스의 메소드들을 상속받는다.

따라서 자바의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수있다.

Object 클래스는 필드를 가지지 않으며, 총 11개의 메소드만으로 구성되어있다.

 

Object 메소드

Object 클래스의 메소드는 다음과 같습니다.

메소드설명

protected Object clone() 해당 객체의 복제본을 생성하여 반환함.
boolean equals(Object obj) 해당 객체와 전달받은 객체가 같은지 여부를 반환함.
protected void finalize() 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출함.
Class<T> getClass() 해당 객체의 클래스 타입을 반환함.
int hashCode() 해당 객체의 해시 코드값을 반환함.
void notify() 해당 객체의 대기(wait)하고 있는 하나의 스레드를 다시 실행할 때 호출함.
void notifyAll() 해당 객체의 대기(wait)하고 있는 모든 스레드를 다시 실행할 때 호출함.
String toString() 해당 객체의 정보를 문자열로 반환함.
void wait() 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행할 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.
void wait(long timeout) 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행하거나 전달받은 시간이 지날 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.
void wait(long timeout, int nanos) 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행하거나 전달받은 시간이 지나거나 다른 스레드가 현재 스레드를 인터럽트(interrupt) 할 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.

 

'언어 > JAVA' 카테고리의 다른 글

14장 예외처리  (0) 2021.10.24
13 인터페이스 / 추상클래스 / enum  (0) 2021.10.22
11장 API  (0) 2021.10.21
10장 상속  (0) 2021.10.19
9장 패키지 / 접근제어자  (0) 2021.09.21