<참고> 자바의정석 6장

1. 객체지향언어란?


-특징(캡상추다 - 캡슐화, 상속, 추상화)

  1. 기존 프로그래밍 언어와 비슷(몇가지 규칙 추가)
  2. 코드 재사용성 높음(상속)
  3. 코드 관리 쉬워짐
  4. 코드 중복 제거로 신뢰성 높은 프로그램 개발 가능

//1~4는 캡상추다의 세부적 장점 설명

-객체란?

  1. 변수+메서드의 집합//엄밀히말하면 ‘iv의 집합’
  2. 클래스라는 ‘설계도’로 만든 인스턴스

2. 클래스와 객체


-클래스란?

멤버변수(cv+iv)+메서드로 이루어진 객체 생성을 위한 설계도 Ex)Tv설계도 객체는 클래스를 통해 만들어진 실체 Ex)Tv

-객체생성방법

Tv t = new Tv(); 

3. 변수와 메서드


-변수종류

  1. iv : 인스턴스변수(멤버변수), 개별, 자동 초기화
  2. cv : 클래스변수(멤버변수), 공유, 자동 초기화
  3. lv : 지역변수, 수동 초기화

-클래스 변수와 인스턴스 변수(카드 예시)

섯다카드의 폭,높이(width, height)는 모두 같음. 그러나 종류,숫자(kind,num)은 다름

  • cv : Ex)int width, int height, 공유
  • iv : Ex)String kind, int num, 개별

-메서드

  1. method ≒ f(x)
  2. 재사용성, 중복코드제거율 UP
  3. 구조 : 선언부 + 구현부
  4. 리턴값이 없을 시 void
    //반환값과 반환타입 일치해야 함(또는 자동형변환 가능하게)
public static test(int a,int b){ //선언부
	int c = a+b //구현부
    return c; //리턴값
}

-JVM 메모리 구조

  1. Method Area ->클래스 정보 저장
  2. Call Stack ->메서드 실행시 차례로 깔림, 순서랑 반대로 실행
  3. Heap -> 인스턴스 생성시 저장

-기본형 매개변수와 참조형 매개변수

  1. 기본형 매개변수(only read)
  2. 참조형 매개변수(read & wirte) cf)참조형 반환타입(copy하기) cf)재귀호출 Ex)factorial

-클래스메서드(cm)와 인스턴스메서드(im)

  1. im -> iv사용O + cv사용O(객체생성필요)
  2. cm -> iv사용X + cv only(객체생성불필요) / static 붙이기
  3. im은 iv관련 작업시 사용하는 메서드
  4. cm은 iv와 관련 없는 작업시 사용하는 메서드

4.오버로딩


-같은 의미의 메서드를 여러개 정의한 것(한 클래스 내) Ex)println( )

-오버로딩 조건

  1. 메서드명이 같아야 함
  2. 매개변수 타입, 개수 달라야 함
  3. 반환 타입은 상관 없음

5. 생성자


-생성자란?

객체 초기화 메서드(인스턴스 초기화 메서드)

-특징

  1. 생성자명==클래스명
  2. 리턴타입이 없다(void X)
  3. 첫줄에는 반드시 다른 생성자 호출해야 함 (this( ), super( ) 등 사용 / 안 넣으면 자동 super( ) 삽입)
  4. 클래스마다 최소 1개 이상 있어야 함(없을 시 컴파일 때 기본생성자 삽입)

-기본 생성자 : 매개변수 없는 생성자 -다른 생성자 호출 : 첫줄에 클래스 이름 대신 this( )사용 cf)this는 변수명 구별용 // Ex)this.color = color; (인스턴스변수=지역변수)

6. 변수의 초기화


-초기화 순서

  1. CV -> IV
  2. 자동->간단->복잡(초기화블럭, 생성자)

-기타

  • 자동은 멤버변수 초기화
  • 간단은 명시적 초기화
  • 복잡은 초기화블럭(클래스초기화 블럭 -> 인스턴스초기화 블럭)
  • 생성자 : 블럭이 생성자보다 우선