Java - 모든 클래스는 Object 클래스를 상속 받는다.

컴퓨터/Java

728x90
반응형

Java의 최상의 Class

Java 언어에서 모든 class는 Object라는 클래스를 상속받아 만들어집니다. 프로그래머가 직접 명시하지 않을 뿐이지 소스코드가 컴파일되어 프로그램이 되는 과정에서 자연스럽게 상속이 되는 class입니다. 

즉 우리가 만드는 모든 클래스는 기본적으로 Object 클래스가 상속되어 있습니다.

class Computer{}
class Computer extends Object{} 
// 두 개념은 동일합니다.

 

Object 클래는 뭘까?

Object 클래스는 프로그래머가 Java에서 class를 만들기 위한 기초를 정의한 클래스입니다. 따라서 class에 기본 요소들에 대한 정의가 되어있습니다. 

Object 클래스 안에 다양한 메서드들이 정의되어있고 프로그래머가 만드는 클래스에서 이 Object 클래스를 만들 당시에 설정된 접근 제한 권한에 따라 다양한 메서드들을 사용하고 , 오버라이드 하여 재정의해서 프로그래가 원하는 데로 사용할 수 있게 됩니다.  정말 수많은 메서드들이 있고 다양한 곳에서 이 메서드들을 찾아볼 수 있습니다.

본문에서는 2가지 메서드에 대해서 알아보도록 하겠습니다.

 

toString()

이 메서드는 객체를 문자의 형태로 반환하는 메서드입니다. 보통 오버라이드 하여 객체를 표시하기 위해 사용합니다.

메서드의 원형은 다음과 같습니다.

String toString()

사용 예제

package Object객체;

class Computer{}
class PC
{
	public String toString() {
		// TODO Auto-generated method stub
		return "이 인스턴스는 PC클래스로 만들어 졌습니다";
	}
	
}
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer com = new Computer();
		System.out.println(com.toString());
		PC pc = new PC();
		System.out.println(pc.toString());
	}

}

  • 문자열의 형태로 반환하여 객체에 고유 문자값을 주고 반환할 수 있게 됩니다.
  • Computer클래스는 따로 toString을 정의하지 않았기 때문에 Object클래스에서의 toString을 호출한 결과가 나옵니다.
  • PC 클래스의 경우 toString을 다시 재정의하여 호출하여 프로그래머가 원하는 형태로 구성하였습니다.

 

equals(Object obj)

이 메서드의 경우 인스턴스가 동일한지 여부를 확인하는 메서드입니다. 동일한 클래스로 만들어진 여러 인스턴스라도 각각의 생성된 인스턴스는 독립된 객체입니다. 하지만 얕은 복사의 형태로 변수명은 다를 수 있습니다. 이런 내용을 구분할 때 효과적입니다. 

함수의 원형은 아래와 같습니다.

boolean equals(Object obj);

 사용 예제

package Object객체;

class PC
{
	public String toString() {
		// TODO Auto-generated method stub
		return "이 인스턴스는 PC클래스로 만들어 졌습니다";
	}
}
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PC pc = new PC(); // 인스턴스 생성
		PC pc1 = new PC(); // 인스턴스 생성
		PC pc2 = pc; // pc의 인스턴스를 얕은 복사
		
		System.out.println(pc.equals(pc1));
		System.out.println(pc.equals(pc2));
	}

}

이런식으로 프로그래머가 정의하지 않은 메서드를 사용하거나 오버라이드 해서 재정의한다면 상위 클래스인 Object클래스에 있는 것입니다. 이런 내용들을 찾아보고 활용해서 좀 더 효율적인 소스코드를 만들어 보세요.

728x90
반응형

'컴퓨터 > Java' 카테고리의 다른 글

Java - 클래스 배열  (0) 2021.08.08
Java - Package(패키지)  (0) 2021.08.04
Java - 얕은 복사와 깊은 복사  (0) 2021.07.21
Java - 오버로딩과 오버라이딩  (0) 2021.07.19
Java - class의 상속의 개념(extends)  (0) 2021.07.16

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :