자바 Object 클래스

Kyu·2021년 1월 23일
0

Java 공부기록

목록 보기
21/40

자바가 만들어놓은 API중에서 최상위 클래스이다. root라고도 한다. 모든 사용자가 만든 클래스는 배열을 포함해서 Object로부터 상속받는다.

그렇기 때문에 모든 클래스는 Object클래스의 메서드를 사용할 수 있다. 대표적으로 toString() 같은 것이 존재한다.

클래스를 설계할 때 기본적으로 생략 된 코드 3곳이 있다.

A라는 클래스를 만들었을 때 첫번째로 모든 클래스는 Object가 상속 된다. 그리고 lang이라는 디폴트 패키지가 있다. 그리고 생성자가 생략되어있다.

A의 부모가 Object라는 사실을 알면 나중에 객체를 생성할때 Object를 이용해서 객체를 만들수 있을 것이다.

Object class를 이용한 객체 생성

Object obj = new A(); . toString()이라는 메소드는 부모가 가지고있고 재정의를 했기때문에 toString을 호출하는 것은 가능하지만 A클래스 안에 display()는 불가능하다. (upcasting)

이런식으로 생성해서 display()에 접근할 수 있는 방법은 downcasting이다. ((A)obj).display();

자문자답
질문: 오버라이드할때 부모메서드가 가지고 있는 기능을 쓰면서, 기능을 추가하는 방법은?
답변: super.메서드() + 구현하고 싶은 기능

Object의 활용

클래스를 배열에도 담을수있다.

Object[] o = new Object[2] 라는 배열을 선언했다.

그러면 o[0] = new A(); o[1] = new B(); 이렇게 선언할 수 있다.

만약 A와 B 객체 내에 go()라는 메서드가 있다면,

for(int i = 0; i < o.length; i++) {
	if(o[i] instanceof A) {
		((A)o[i]).go();
	} else {
		((B)o[i]).go();
	}
}

이런식으로 downcasting해서 사용할 수도 있다.

profile
TIL 남기는 공간입니다

0개의 댓글