자바의 정석 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) 조건

  1. 메서드명 일치 ex) println()
  2. 매개변수 개수 or 타입 달라야
  3. 반환타입 상관 x

5. 생성자

1) 생성자?

  • 인스턴스 초기화 메서드
  • 메서드와 차이점
    1. 리턴값 x, void 사용 x
    2. 생성자이름 == 클래스이름
    3. 모든 클래스 생성자 1개 이상 필수

2) 기본생성자

  • 매개변수 없는 생성자

3) (x)

4) 생성자에서 다른 생성자 호출

  • this() 사용
  • 조건
    1. 클래스이름 대신 this() 사용
    2. 반드시 첫줄에 작성

참조변수 this

  • this는 변수명 구별용
  • ex) this.color = color; // this.color는 iv, color는 lv

6. 변수의 초기화

1) 변수의 초기화

  • 지역변수는 사용전 초기화 필수
  • 멤버변수 초기화 방법
    1. 명시적 초기화 (간단)
    2. 생성자 (복잡)
    3. 초기화블럭 (복잡)

2) 명시적 초기화 -> 기본초기화 (=)

3) 초기화블럭

  • 클래스 초기화블럭 - static{}
  • 인스턴스 초기화블럭 - {}

4) 초기화 순서

  • cv -> iv
  • 자동 -> 간단 -> 복잡(초기화블럭 -> 생성자)

참고자료

  • 자바의 정석 6장