본문 바로가기
Java

자바 중급 026. 상속, 오브젝트 클래스 (object 클래스)- 모든 클래스의 조상 클래스

by Smart Factory in 2020 2021. 9. 12.
728x90
반응형

안녕하세요. 스마트 팩토리입니다 
자바 중급 026. 상속, 오브젝트 클래스 (object 클래스)- 모든 클래스의 조상 클래스에 대해 알아보겠습니다. 

1.오브젝트 클래스(Object  class)

가. Object클래스
 

- 상속 계층에서 최상위 클래스 
- 모든 클래스는 Object 를 가지고 있으면 11개의 메소드를 전부 상속 받는다. 

 

나. Object 클래스 예시 

<< Objectclass2.java 실행 클래스 >>

class A에 멤버 변수와 멤버 클래스를 위와 같이 작성하였습니다. 

 A n1=new A(5,3); 

n1객체를 생성하여
plus() 메소드를 실행하면

두수 의 합이  8이 출력되는 것을 볼 수 있습니다. 

System.out.println(n1);
System.out.println(n1.toString());

여기서 n1을 출력한 값이  대략 주소가 나오는 것을 볼 수 있는데 아래 n1. toString()  메소드를 실행해도 동일한 값이 나온다는 것을 볼 수 있습니다. n1. 은 객체이기 때문에 해당 클래스의 멤버를 접근할 수 있습니다.

이는 class A 다음에 extends Object를 넣어도 동일한 결과값이 나오는 것을 볼 수 있습니다. 이는 결과적으로 Object 클래스를 상위 조상으로 가지고 있다는 것을 말합니다. 상속관계를 생각해 보면 

 A extends B 인 경우 

A가 부모 클래스, B가 자식 클래스입니다. 

이런 부모 자식 , 자식 관계에서  최고 조상은 Object클래스 입니다. 

 

package exampleObjectclass;

class A {
int x;
int y;

A(int x, int y){  --> 생성자
this.x=x;
this.y=y;
}

void plus() { 
  int c=x+y;
  System.out.println(" 두 수의 합:"+ c);
}
}

public class Objeclass2 {

public static void main(String[] args) {
    A n1=new A(5,3);
     n1.plus();    
System.out.println(n1);
System.out.println(n1.toString());
}

}

 

다.  toString() 메소드 선언 내용  

System.out.println(n1);
System.out.println(n1.toString());

의 값이 결과적으로 주소값 비슷므리한 값으로 나오는 것을 볼 수 있는데

해당 toString() 메소드가 가지고 있는 선언내용을 보면 어느정도 이해할 수 있습니다.

class A extends Object 로 보통 object클래스 부분은 생략되면 있는 것으로 간주되어 

오브젝트 클래스 안에 있는 11개의 메소드 중 하나인  to Stiring 메소드를 사용하여 해당 값이 출력되게 됩니다. 

그 값을 확인해 보면 

to String () 를 선택--> 오른쪽 마우스 클릭
Open Declaration 클릭( 단축키 f3)

 

toString() 메소드가 선언된 내용을 볼수가 있는데 그 중 하나에 리턴값으로 다음과 같이 선언되어 있어서 출력되게 됩니다. 

public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }

 

다. Object클래스의 11개의 메서드

객체를 생성하고 그 다음 멤버 접근을 하기 위해서 . 연산자 다음에  ctrl+space를 누르면 

접근할 수 있는 멤버들을 볼 수 있습니다. 

Object 로 된 부분이 오브젝트 클래스에 선언되어서 접근할 수 있는 것들입니다. 

clone();
equals(Object obj);
finalize();
getClass();
hashCode();
notify();
notifyAll();
toString();
wait();
wait(long timeoutMills);
wiat(long timeoutMills,int nanos)

이에 대한 설명은 각 단계에 맞게 적용될 시기에 포스팅 하도록 하겠습니다. 

 

728x90
반응형

댓글