1. 캡슐화(encapsulation) : 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것
    1. 클래스(class): 객체 모양을 선언한 틀(캡슐화하는 틀)
    2. 객체(instance): 생성된 실체
      1. 메소드(method)  : 함수
      2. 필드(field) : 변수
  2. 상속(inheritance)
    1. 상위 개체의 속성이 하위 개체에 물려짐
    2. 하위 개체가 상위 개체의 속성을 모두 가지는 관계
    3. 상위 클래스의 멤버를 하위 클래스가 물려받음
      1. 상위 클래스 : 수퍼 클래스(super class)
      2. 하위 클래스 : 서브 클래스(sub class), 수퍼 클래스 코드의 재사용, 새로운 특성 추가 가능
  3. 클래스와 객체
    1. 클래스
      1. 객체의 속성(state)과 행위(behavior) 선언
      2. 객체의 설계도 혹은 틀
    2.  객체
      1. 클래스의 틀로 찍어낸 실체
      2. 프로그램 실행 중에 생성되는 실체
      3. 메모리 공간을 갖는 구체적인 실체
      4. 인스턴스(instance)라고도 부름
    3. 사례
      1. 클래스: 소나타자동차,             객체: 출고된 실제 소나타 100대
      2. 클래스: 벽시계,                         객체: 우리집 벽에 걸린 벽시계들
      3. 클래스: 책상,                             객체: 우리가 사용중인 실제 책상들
  4. 다형성(polymorphism)
    1. 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현되는 것
    2. 다형성 사례
      1. 메소드 오버로딩(overloading) : 한 클래스 내에서 같은 이름이지만 다르게 작동하는 여러 메소드
        1. 한 클래스 내에서 두 개 이상의 이름이 같은 메소드 작성
        2. 메소드 이름이 동일하여야 함
        3. 매개 변수의 개수가 서로 다르거나, 타입이 서로 달라야 함
        4. 리턴 타입은 오버로딩과 관련 없음
      2. 메소드 오버라이딩(overriding) : 슈퍼 클래스의 메소드를 동일한 이름으로 서브 클래스마다 다르게 구현
  5. 생성자(constructor)
    1. 객체가 생성될 때 초기화 목적으로 실행되는 메소드
    2. 객체가 생성되는 순간에 자동 호출
    3. 특징
      1. 생성자 이름은 클래스 이름과 동일
      2. 생성자는 여러 개 작성 가능(생성자 중복)
      3. 생성자는 객체 생성시 한 번만 호출
      4. 자바에서 객체 생성은 반드시 new 연산자로 함
      5. 생성자의 목적은 객체 생성 시 초기화
      6. 생성자는 리턴 타입을 지정할 수 없음
    4. 기본 생성자(default constructor)
      1. 매개 변수 없고, 아무 작업 없이 단순 리턴하는 생성자
      2. 디폴트 생성자라고도 불림
    5. 클래스에 생성자가 하나도 선언되어 있지 않을 때
      1. 컴파일러에 의해 기본 생성자 자동 생성
    6. 클래스에 생성자가 선언되어 있는 경우
      1. 컴파일러는 기본 생성자를 자동 생성해 주지 않는다.
    7. this
      1. 객체 자신에 대한 레퍼런스
      2. 컴파일러에 의해 자동 관리, 개발자는 사용하기만 하면 됨
      3. this.멤버 형태로 멤버를 접근할 때 사용
    8. this()
      1. 같은 클래스의 다른 생성자 호출
      2. 생성자 내에서만 사용 가능
      3. 생성자 코드의 제일 처음에 있어야 함
  6. 자바의 객체 배열
    1. 객체에 대한 레퍼런스 배열임
    2. 자바의 객체 배열 만들기 3 단계
      1. 배열 레퍼런스 변수 선언
      2. 레퍼런스 배열 생성
      3. 배열의 각 원소 객체 생성
  7. 가비지(garbage)
    1. 가리키는 레퍼런스가 하나도 없는 객체
      1. 더 이상 접근할 수 없어 사용할 수 없게 된 메모리
  8. 가비지 켈렉션(garbage collection)
    1. 자바 가상 기계의 가비지 컬렉터가 자동으로 가비지 수집, 반환
    2. 자바 가상 기계가 가비지 자동 회수
      1. 가용 메모리 공간이 일정 이하로 부족해질 때
      2. 가비지를 수거하여 가용 메모리 공간으로 확보
    3. 가비지 컬렉터(garbage collector)에 의해 자동 수행
  9. 패키지(package)
    1. 상호 관련 있는 클래스 파일(컴파일된 .class)을 저장하여 관리하는 디렉터리
    2. 자바 응용프로그램은 하나 이상의 패키지로 구성
  10. 자바의 접근 지정자(access specifier)
    1. public 멤버
      1. 패키지에 관계 없이 모든 클래스에게 접근 허용
    2. private 멤버
      1. 동일 클래스 내에만 접근 허용
      2. 상속 받은 서브 클래스에서 접근 불가
    3. protected 멤버
      1. 같은 패키지 내의 다른 모든 클래스에게 접근 허용
      2. 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능
    4. 디폴트(default) 멤버
      1. 같은 패키지 내의 다른 클래스에게 접근 허용
  11. static 멤버
    1. static 멤버는 클래스당 하나만 생성
    2. 객체들에 의해 공유됨
    3. 활용
      1. 전역 변수와 전역 함수를 만들 때 활용
      2. 공유 멤버를 만들고자 할 때
      3. static으로 선언한 멤버는 클래스의 객체들 사이에 공유
  12. final
    1. final 클래스 – 더 이상 클래스 상속 불가능
    2. final 메소드 – 더 이상 오버라이딩 불가능
    3. final 필드, 상수 선언
      1. 상수를 선언할 때 사용
      2. 상수 필드는 선언 시에 초기 값을 지정하여야 한다
      3. 상수 필드는 실행 중에 값을 변경할 수 없다
error: Content is protected !!