728x90
□ 10장 Object 클래스
■ Object : 모든 클래스의 최상위 클래스
- equals, toString, hashCode, finalize, clone, notify, notifyAl, wait, getClass
● 디폴트 toString() : 가장 중요한 정보를 리턴하는 메서드, 객체의 타입과 객체를 구별하는 번호
- 오버라이딩 : 문자열로 리턴, 객체의 요약 정보를 문자열로 리턴하는 목적으로 사용
● 디폴트 equals() : 참조값 비교, 재정의해서 사용자 정의 비교법으로 사용, ==
- 오버라이딩 : 사용자 정의 객체 비교법
● hashCode() : 객체의 고유번호 출력(16진수)
■ finallize() : 객체의 메모리가 제거되기 직전에 가비지 콜렉터가 자동으로 호출하는 메서드(protected void finalize())
- 가비지 콜렉터는 스레드
■ clone() : 오직 Object의 clone()만이 메모리 차원의 복사가 가능
- 사용 : protected이기 때문에 상속된 상태에서 사용, Cloneable 인터페이스가 구현된 상태에서 clone()을 사용
- 접근 : protected이기 때문에 내부에서 재정의한 후 super로 접근
■ wait()과 notify() : 메모리와 직접적인 관련이 있고, 데이터 동기화와 많은 관련이 있다.
● wait() : 스레드를 NotRunnable 상태로 만든다
● notify(), notifyAll() : NotRunnable 상태의 스레드를 Runnable 상태로 만든다.
● 공유자원을 synchronized로 동기화 했을때
- 하나의 스레드가 공유자원을 사용할 때 자동으로 공유자원에 락(Lock)을 걸어준다.
- 공유자원을 원하는 다른 스레드들은 자동으로 대기한다.
- 락이 해제되었을때 대기하던 스레드들은 순서대로 공유자원을 사용
■ Class getClass() : 클래스의 정보 클래스
● 리플렉션(Reflection)을 이용한 프로그램 기법 : 객체를 이용해서 클래스를 얻는다.
□ 11장 자바 Reflection
■ Class 클래스 : .class의 등록정보 클래스, 바이트 코드의 등록정보 클래스
● 리플렉션(Reflection)을 이용한 프로그램 기법 : 객체를 이용해서 클래스의 정보를 분석해 내는 프로그램 기법
- 사용 : 형은 알고있지만 형변환을 할 수 없는 상태에서 객체의 매서드를 호출
* 이유 : 모르는 클래스를 핸들하고자 하는 것이 아니라, 클래스의 모든 정보는 알지만 형변환을 할 수 없기 때문
- 정적 바인딩으로 Class를 생성한 후 객체를 만들었다면 다운캐스팅 할 수 있다.
● 동적 바인딩 클래스 : 일반적인 리플렉션 기법
- 다운 캐스팅 할수 없다.(컴파일할때 해당 클래스의 이름을 사용할 수 없기 때문)
* 매개변수가 없을때나 있을때 메서드 호출
● instanceof : 형 확인이 필요한 상황에 사용
□ 12장 자바 Serialization
■ 클래스와 객체의 관계 : 클래스의 형정보와 객체의 메모리 사이의 관계
● 직렬화 : 객체를 저장하는 기법(바이트로 저장)
- 이유 : 객체의 메모리는 순간적이기 때문에 영구적으로 보관하기 위해서
- 조건 : 반드시 non-static, non-transient로 선언되어야만 직렬화에 포함된다.
- 객체 역직렬화 과정
● writeObject()와 readObject()
- writeObject() : 객체를 스트림에 기록하는데 사용
- readObject() : 스트림으로부터 객체를 복원하는데 사용
● transient 스트림 : 멤버변수를 직렬화의 대상에서 제외할때 사용하는 키워드, 변수앞에 transient명시
□ 13장 자바 AWT & Swing
■ AWT와 스윙
● AWT(Abstract Window Toolkit) : 윈도우 프로그램을 하기 위한 클래스 라이브러리
- 장점 : 플랫폼 독립적인 그래픽 프로그램을 작성할 수 있다.
● Swing(스윙) : AWT를 디스플레이적인 면과 기능적인 면에서 개선한 그래픽 라이브러리
■ Object : 모든 클래스의 최상위 클래스
- equals, toString, hashCode, finalize, clone, notify, notifyAl, wait, getClass
boolean equals(Object obj) | String toString() |
int hashCode() | protected void finalize() |
final void notify(), final void notifyAll() | protected Object clone() |
final void wait(), final void wait(Long timeout), final void wait(long timeout, int nanos) |
final Class getClass() |
- 오버라이딩 : 문자열로 리턴, 객체의 요약 정보를 문자열로 리턴하는 목적으로 사용
● 디폴트 equals() : 참조값 비교, 재정의해서 사용자 정의 비교법으로 사용, ==
- 오버라이딩 : 사용자 정의 객체 비교법
● hashCode() : 객체의 고유번호 출력(16진수)
■ finallize() : 객체의 메모리가 제거되기 직전에 가비지 콜렉터가 자동으로 호출하는 메서드(protected void finalize())
- 가비지 콜렉터는 스레드
■ clone() : 오직 Object의 clone()만이 메모리 차원의 복사가 가능
- 사용 : protected이기 때문에 상속된 상태에서 사용, Cloneable 인터페이스가 구현된 상태에서 clone()을 사용
- 접근 : protected이기 때문에 내부에서 재정의한 후 super로 접근
■ wait()과 notify() : 메모리와 직접적인 관련이 있고, 데이터 동기화와 많은 관련이 있다.
● wait() : 스레드를 NotRunnable 상태로 만든다
● notify(), notifyAll() : NotRunnable 상태의 스레드를 Runnable 상태로 만든다.
● 공유자원을 synchronized로 동기화 했을때
- 하나의 스레드가 공유자원을 사용할 때 자동으로 공유자원에 락(Lock)을 걸어준다.
- 공유자원을 원하는 다른 스레드들은 자동으로 대기한다.
- 락이 해제되었을때 대기하던 스레드들은 순서대로 공유자원을 사용
■ Class getClass() : 클래스의 정보 클래스
● 리플렉션(Reflection)을 이용한 프로그램 기법 : 객체를 이용해서 클래스를 얻는다.
□ 11장 자바 Reflection
■ Class 클래스 : .class의 등록정보 클래스, 바이트 코드의 등록정보 클래스
● 리플렉션(Reflection)을 이용한 프로그램 기법 : 객체를 이용해서 클래스의 정보를 분석해 내는 프로그램 기법
- 사용 : 형은 알고있지만 형변환을 할 수 없는 상태에서 객체의 매서드를 호출
* 이유 : 모르는 클래스를 핸들하고자 하는 것이 아니라, 클래스의 모든 정보는 알지만 형변환을 할 수 없기 때문
◈ 생성자에 매개변수가 없는 객체 생성하기
◈ 생성자에 매개변수가 있는 객체 생성하기 : 오버로딩에 의해서 여러개의 생성자가 존재할수 있기 때문에 생성자 검색
◈ 매개변수가 없는 메서드 호출하기
◈ 매개변수가 있는 메서드 호출하기
◈ 특정객체에 멤버 필드 값 세팅하기
◈ 특정객체에 멤버 피르 값 얻어내기
● Data 클래스 내에 존재하는 인터페이스와 상위 클래스 알아내기◈ 생성자에 매개변수가 있는 객체 생성하기 : 오버로딩에 의해서 여러개의 생성자가 존재할수 있기 때문에 생성자 검색
◈ 매개변수가 없는 메서드 호출하기
◈ 매개변수가 있는 메서드 호출하기
◈ 특정객체에 멤버 필드 값 세팅하기
◈ 특정객체에 멤버 피르 값 얻어내기
Class c = Data.class;
Class iface = c.getInterface()
Class sc = c.getSuperclass()
● 정적 바인딩 클래스 : 컴파일할때 해당 .class 파일이 필요하다면, 해당 클래스를 정적 바인딩으로 사용하는 것이다.Class iface = c.getInterface()
Class sc = c.getSuperclass()
- 정적 바인딩으로 Class를 생성한 후 객체를 만들었다면 다운캐스팅 할 수 있다.
● 동적 바인딩 클래스 : 일반적인 리플렉션 기법
- 다운 캐스팅 할수 없다.(컴파일할때 해당 클래스의 이름을 사용할 수 없기 때문)
* 매개변수가 없을때나 있을때 메서드 호출
● instanceof : 형 확인이 필요한 상황에 사용
□ 12장 자바 Serialization
■ 클래스와 객체의 관계 : 클래스의 형정보와 객체의 메모리 사이의 관계
● 직렬화 : 객체를 저장하는 기법(바이트로 저장)
- 이유 : 객체의 메모리는 순간적이기 때문에 영구적으로 보관하기 위해서
- 조건 : 반드시 non-static, non-transient로 선언되어야만 직렬화에 포함된다.
직렬화를 위한 인터페이스
◈ Serializable 인터페이스 : 인터페이스가 구현되면 저장이나 복원은 Object 스트림이 알아서 한다.
◈ Externalizable 인터페이스
- 객체 직렬화 과정◈ Serializable 인터페이스 : 인터페이스가 구현되면 저장이나 복원은 Object 스트림이 알아서 한다.
◈ Externalizable 인터페이스
◈ 목표지점에 출력 스트림을 생성
◈ 생성된 스트림을 Object 출력 스트림으로 변환(ObjectOutputStream)
◈ 직렬화된 객체를 객체스트림을 통해서 전송하거나 읽어낸다.(ObjectOutputStream → writeObject(Object obj))
◈ 스트림을 닫는다
● 역직렬화 : 직렬화된 객체를 복원하는 기법◈ 생성된 스트림을 Object 출력 스트림으로 변환(ObjectOutputStream)
◈ 직렬화된 객체를 객체스트림을 통해서 전송하거나 읽어낸다.(ObjectOutputStream → writeObject(Object obj))
◈ 스트림을 닫는다
- 객체 역직렬화 과정
◈ 목표지점에 입력 스트림을 생성한다.
◈ 생성된 스트림을 Object 입력 스트림으로 변환(ObjectInputStream)
◈ 객체 스트림을 통해서 직렬화된 객체를 읽어낸다(ObjectInputStream → readObject())
◈ 스트림을 닫는다.
● 수작업 직렬화 : SerialStream클래스를 역직렬화하기 위해 DeSerialStream 클래스를 두고있다◈ 생성된 스트림을 Object 입력 스트림으로 변환(ObjectInputStream)
◈ 객체 스트림을 통해서 직렬화된 객체를 읽어낸다(ObjectInputStream → readObject())
◈ 스트림을 닫는다.
● writeObject()와 readObject()
- writeObject() : 객체를 스트림에 기록하는데 사용
- readObject() : 스트림으로부터 객체를 복원하는데 사용
● transient 스트림 : 멤버변수를 직렬화의 대상에서 제외할때 사용하는 키워드, 변수앞에 transient명시
□ 13장 자바 AWT & Swing
■ AWT와 스윙
● AWT(Abstract Window Toolkit) : 윈도우 프로그램을 하기 위한 클래스 라이브러리
- 장점 : 플랫폼 독립적인 그래픽 프로그램을 작성할 수 있다.
● Swing(스윙) : AWT를 디스플레이적인 면과 기능적인 면에서 개선한 그래픽 라이브러리
728x90
'자바' 카테고리의 다른 글
소설같은 자바 훑어보기 2권!! (0) | 2010.02.19 |
---|---|
소설같은 자바 훑어보기 1권!! (0) | 2010.02.18 |