java 객체지향 한장정리 (1)
September 05, 2018
자바의 정석 6장 정리
1. 객체
- 변수 + 메서드의 집합
- 클래스라는 설계도로 만든 ‘인스턴스’
2. 클래스와 객체
- 클래스 : 멤버변수 + 메서드로 이루어진 객체생성을 위한 ‘설계도’
- 객체 : 클래스를 통해 만들어진 실체
- ex) 클래스 - Tv설명서 / 객체 - Tv
- 객체 생성방법
Tv t = new Tv();
3. 변수와 메서드
1) 변수 종류
class 클래스명{
int iv; // 인스턴스 변수
static int cv; // 클래스 변수
// iv+cv = 멤버변수
}
void method(){
int lv = 0; // 지역변수
}
- iv는 인스턴스 생성시 생성된다(개별)
- cv는 메서드 내부에서만 사용가능 (초기화 필수)
2) 클래스변수와 인스턴스 변수
- cv : 공유속성
- iv : 개별속성
class Prac{
// 카드의 넓이와 높이는 공유속성 -> cv
static int width;
static int height;
// 카드의 종류와 숫자는 개별속성 -> iv
String kind;
int num;
}
3) 메서드
- 재사용성, 중복코드제거
- 구조 : 선언부 + 구현부
- 특징
- 리턴값 없으면 void
- 반환값 반환타입 일치해야 함
4) JVM 메모리 구조
- Method area : 클래스 정보 저장
- Call stack : 메서드 실행시 차례로 실행
- Heap : 인스턴스 생성시 저장
call stack
- 쌓인 순서와 반대로 실행
- 하나의 메서드만 실행
- 실행 메서드 바로 밑이 호출 메서드
5) 기본형 매개변수와 참조형 매개변수
- 기본형 (read only)
- 참조형 (read & write)
6) 재귀 (x)
7) 클래스 메서드와 인스턴스 메서드
- im -> iv 사용 o (객체 생성 필요)
- cm -> iv 사용 x (객체 생성 불필요)
- im은 iv관련 작업할 때 쓰는 메서드
- cm은 im이나 iv와 관련 없는 작업할 때 쓰는 메서드
- 사용시 static 있으면 cm 없으면 im
4. 오버로딩
1) 오버로딩?
- 같은 이름의 메서드를 여러개 정의한 것
- ex) println()
2) 조건
- 메서드명 일치 ex) println()
- 매개변수 개수 or 타입 달라야
- 반환타입 상관 x
5. 생성자
1) 생성자?
- 인스턴스 초기화 메서드
- 메서드와 차이점
- 리턴값 x, void 사용 x
- 생성자이름 == 클래스이름
- 모든 클래스 생성자 1개 이상 필수
2) 기본생성자
- 매개변수 없는 생성자
3) (x)
4) 생성자에서 다른 생성자 호출
- this() 사용
- 조건
- 클래스이름 대신 this() 사용
- 반드시 첫줄에 작성
참조변수 this
- this는 변수명 구별용
- ex) this.color = color; // this.color는 iv, color는 lv
6. 변수의 초기화
1) 변수의 초기화
- 지역변수는 사용전 초기화 필수
- 멤버변수 초기화 방법
- 명시적 초기화 (간단)
- 생성자 (복잡)
- 초기화블럭 (복잡)
2) 명시적 초기화 -> 기본초기화 (=)
3) 초기화블럭
- 클래스 초기화블럭 - static{}
- 인스턴스 초기화블럭 - {}
4) 초기화 순서
- cv -> iv
- 자동 -> 간단 -> 복잡(초기화블럭 -> 생성자)
참고자료
- 자바의 정석 6장