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를 상속받았으므로 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 |