반응형

✅ 참고
Java Object를 정확하게 이해하려면 자바 상속 관계에 대한 이해가 필요합니다.
java.lang 패키지
Java 언어를 이루는 가장 기본이 되는 라이브러리(클래스 모음)을 보관하는 자바에서 가장 기본이 되는 패키지입니다.
java.lang 패키지의 대표적인 클래스들
- Object : 모든 자바 객체의 부모 클래스입니다.
- String : 문자열 클래스입니다.
- Integer , Long , Double : 래퍼 타입, 기본형 데이터 타입을 객체로 만든 클래스입니다.
- Class : 클래스 메타 정보 관련 클래스입니다.
- System : 시스템과 관련된 기본 기능들을 제공하는 클래스입니다.
java.lang 패키지의 특징
import 생략 가능
java.lang 패키지에 포함되어 있는 클래스들은 아래와 같이 import 생략이 가능합니다.
//import java.lang.System; // import 생략 가능
public class LangMain {
public static void main(String[] args) {
System.out.println("hello java");
}
}
Object 클래스
Java에서 모든 클래스의 최상위 부모 클래스입니다.
클래스 관계도
Object 클래스를 상속받은 Parent 클래스,
Parent 클래스를 상속받은 Child 클래스의 관계도를 나타낸 그림입니다.

아래 코드는 위 그림을 참고하여 각각의 클래스를 구현하고 생성하는 코드입니다.
//public class Parent extends Object{ // 부모가 없으면 자동으로 Object 클래스를 상속받는다.
public class Parent { // 즉, 1번과 2번은 같은 코드입니다.
public void parentMethod() {
System.out.println("Parent.parentMethod");
}
}
public class Child extends Parent {
public void childMethod() {
System.out.println("Child.childMethod");
}
}
자식 클래스를 생성하고 자식 클래스의 메서드와 부모 클래스의 메서드,
추가로 Object 클래스에서 해당 인스턴스의 참조값을 반환하는 메서드 toString()을 호출합니다.
public class ObjectMain {
public static void main(String[] args) {
Child child = new Child();
child.childMethod();
child.parentMethod();
// toString()은 Object 클래스의 메서드
String string = child.toString();
System.out.println(string);
}
}
실행 결과
Child.childMethod
Parent.parentMethod
lang.object.Child@X001
Child 인스턴스의 참조값을 확인할 수 있습니다.
실행 결과 그림
Parent 클래스는 자동으로 Object 클래스를 상속 받았기 때문에 메모리에도 함께 생성됩니다.

자바에서 Object 클래스가 최상위 부모 클래스인 이유
공통 기능 제공
클래스마다 공통으로 필요한 기능이 존재합니다.
예를들어 toString()과 같은 메서드입니다.
이러한 공통 기능들을 개발할 때 마다 구현하는것은 개발자에게 상당히 번거로운 작업입니다.
따라서 자바는 공통 기능들을 Object 클래스에서 제공하여 개발자들에게 편의성을 제공합니다.
다형성의 기본 구현
개발에 있어서 다형성은 굉장히 중요한 개념입니다.
모든 객체의 부모 클래스인 만큼 객체를 모든 객체를 참조할 수 있습니다.
따라서 모든 자바 객체는 Object 타입으로 처리될 수 있으며,
따라서 자바는 다형성을 지원하는 기본 메커니즘을 제공합니다.
반응형
'JAVA & Spring' 카테고리의 다른 글
[Java] static변수와 static메서드 총 정리(+그림&코드) (0) | 2025.01.22 |
---|---|
[Java] 자바 메모리 구조 총 정리(+그림) (0) | 2025.01.21 |
[Java] super와 super() 총 정리(+그림&코드) (0) | 2025.01.07 |
[Java] 로또 번호 자동 생성기 (+코드) (0) | 2024.12.01 |
[Spring] QueryDSL 설정 총 정리 (build.gradle) (0) | 2024.11.24 |
댓글