자바의 클래스를 선언할 때, extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 된다.
자바의 모든 클래스는 Object 클래스의 자식이거나, 자손 클래스가 된다. 즉, Object는 자바의 최상의 부모 클래스에 해당된다.
--> class A {...} 이렇게 선언을 하면
class A extends Object {...} 자동으로 Object를 상속을 한다.
Object A = new A(); 이 가능하다.
class A {...}
class B extends A {...}
이 클래스들을 메인 메소드에서
A a = new A();
A b = new B();
이렇게 하는 것이 가능하다.
B 클래스는 A를 상속하는데, A 클래스는 자동으로 Object를 상속하기 때문에 가능하다.
"B는 A가 상속하는 Object를 간접으로 상속한다."
Object클래스 메소드
수정자 혹은 타입 | 메소드, 설명 |
protected Object | clone() 오브젝트를 복사한 것을 생성하고 반환한다. |
boolean | equals(Object obj) 현 오브젝트와 obj가 서로 같은지 판단한다 (같으면 true, 다르면 false) |
protected void | finalize() 가비지컬렉터(GC)가 호출되어 해당하는 오브젝트가 소멸될 때 실행한다. |
Class<?> | getClass() 현 오버젝트의 실행되는 클래스를 반환한다. |
int | hashCode() 현 오버젝트의 해시코드 값을 반환한다. |
void | notify() 쓰레드 부분으로 단일 쓰레드를 실행한다.(멈춰있던 쓰레드 포함) |
void | notifyAll() 쓰레드 부분으로 모든 쓰레드를 실행한다.(멈춰있던 쓰레드 포함) |
String | toString() 현 오브젝트의 내용을 String형식으로 반환한다. |
void | wait() 쓰레드 부분으로 notify(), notifyAll()을 사용할때 까지 쓰레드를 멈춘다. |
void | wait(long timeout) 쓰레드 부분으로 notify(),notifyAll()을 사용할때 까지 쓰레드를 멈추거나 timeout만큼 멈춘다. |
void | wait(long timeout, int nanos) 쓰레드 부분으로 notify(),notifyAll()을 사용할 때 까지 쓰레드를 멈추거나 실제로 일어난 시간만큼 멈춘다. |
toString() 메소드가 중요!
toString() 메소드 |
![]() 보통은 출력하도록 하는 메소드(printA)를 만들게 된다. 하지만 여기서 toString을 오버로딩 하면 printA를 사용하지 않고, 쉽게 출력이 가능하다. ![]() toString은 toString 메소드를 직접 호출 하지 않아도 자동으로 호출이 된다. (위 코드에서 one.toString()을 하지 않아도 호출이 된다) 예시 ![]() System.out.println() 메소드는 출력을 위해 사용을 했다. 이 메소드의 매개값은 출력을 할 내용인데, 이 매개 값이 기본타입(byte, short, int, long, float, double, boolean)일 경우 해당 값을 그대로 출력한다. 만약 매개 값으로 객채를 주면 객체의 toString() 메소드를 호출해 리턴값을 받아서 출력하도록 되어 있다. |
'Backend > JAVA' 카테고리의 다른 글
[JAVA] TreeSet HashSet (0) | 2022.03.17 |
---|---|
[JAVA] 접근 제어자 (0) | 2022.03.16 |
[JAVA] 오버로딩, 오버라이딩 (Overloading, Overrding) (0) | 2022.03.14 |
[JAVA] abstract , interface (0) | 2022.03.11 |
[JAVA] 쓰레드 (Thread) (0) | 2022.03.10 |