4. java.lang.object와 JAVA의 클래스 지향적 성향
* 자바 API의 모든 클래스와 사용자가 정의한 모든 클래스의 최상위 클래스이다. 모든 자바 클래스들은 Object 클래스로부터 상속받는다.
Object 클래스의 모든 메소드와 변수는 다른 모든 클래스에서도 사용 가능할 수 있다
* 멤버 없이 11개의 메소드로 이루어져있다.
* 모든 시행이 가져야 할 기본적인 것들이다.
§ void wait()
: 스레드를 일시적으로 중지할 때 호출한다.
§ void wait(long timeout)
: 주어진 시간만큼 스레드를 일시적으로 중지할 때 호출한다.
§ void wait(long timeout, int nanos)
: 주어진 시간만큼 스레드를 일시적으로 중지할 때 호출한다.
§ boolean equals(Object obj)
: 두 개의 객체가 같은지 비교하여 같으면 true를, 같지 않으면 false를 반환한다.
§ String toString()
: 현재 객체의 문자열을 반환한다.
§ protected Object clone()
: 객체를 복사한다.
§ protected void finalize()
: 가비지 컬렉션 직전에 객체의 리소스를 정리할 때 호출한다.
§ Class getClass()
: 객체의 클래스형을 반환한다.
§ int hashCode()
: 객체의 코드값을 반환한다.
§ void notify()
: wait된 스레드 실행을 재개할 때 호출한다.
§ void notifyAll()
: wait된 모든 스레드 실행을 재개할 때 호출한다.
§ 자바가 왜 객체지향, 클래스지향적인가?
1. 코드를 작성 할 때 *캡슐화와 데이터 은닉을 통하여 데이터를 보호 하고 값의 무자비한 변환을 막을 수 있다. - 보안의 안정성
2. 다형성과 메소드의 오버로딩을 통하여 적은 노력으로 쉽게 코드를 변경할 수 있다. - 명료성
3. 상속을 통하여 새로운 코드를 작성할 때 기존의 코드를 사용하여 쉽게 작성할 수 있다. - 단순성
*캡슐화 : 은닉의 정도를 접근지정자로 기술하고 해당 영역에 들어가는 속성이나 메소드를 제한하여 기술한다. 접근지정자에 의해 제한된 멤버들은 컴파일러에 의해 판단된다.