ch6 객체지향프로그래밍1-1
##Chapter6 객체지향 프로그래밍1
###1. 객체지향언어
####1.2. 객체지향언어
* 코드의 재사용성이 높음.
* 코드의 관리 용이.
* 신뢰성이 높은 프로그래밍 가능.
###2. 클래스와 객체
####2.2. 객체와 인스턴스
클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라 한다.
####2.3. 객체의 구성요소
* 속성(property)
* 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
* 기능(function)
* 메서드(method), 행위(behavior), 함수(function)
####2.4. 인스턴스의 생성과 사용
클래스명 변수명;
변수명 = new 클래스명();
Tv = t;
t = new Tv();
####2.5. 클래스의 또 다른 정의
|비객체지향적 코드|객체지향적 코드|
|--------------|:-----------:|
|int hour1, hour2;|Time t1 = new Time();|
|int[] hour = new int[3];|Time[] t = new Time[3];|
###3. 변수와 메서드
####3.1. 선언위치에 따른 변수의 종류
|변수의 종류|선언 위치|생성 시기|
|---------|:------:|--------|
|클래스 변수|클래스 영역|클래스가 메모리에 올라갈 때|
|인스턴스 변수|클래스 영역|인스턴스가 생성되었을 때|
|지역 변수|클래스 영역 이외의 영역(메서드, 생성자, 초기화 블럭 내부)|변수 선언문이 수행되었을 때|
####3.6. JVM의 메모리구조
1. 메서드영역(method area)
* 클래스 데이터 저장(클래스 변수도 함께 생성).
2. 호출스택(call stack OR execution stack)
* 메서드의 작업에 필요한 메모리 공간 제공.
3. 힙(heap)
* 인스턴스가 생성되는 공간(인스턴스 변수 생성).
####3.7. 기본형 매개변수와 참조형 매개변수
기본형 매개변수 : 읽기만 가능. read only.
`static void change(int x<bold>)`
참조형 매개변수 : 읽고 변경 가능. read & write.
`static void change(Data d)`
####3.9. 클래스메서드(static)와 인스턴스메서드
* 클래스 설계시 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
* 클래스변수(static변수)는 인스턴스를 생성하지 않아도 사용 가능하다.
* 클래스메서드(static메서드)는 인스턴스변수를 사용할 수 없다.
* 메서드 내의 인스턴스변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.