1 minute read

객체

  • 현실 세계에서 독립적으로 존재하는 것(유형, 무형, 개념 등)
  • 여러 개의 자료형과 여러 개의 데이터를 한 번에 보관하고 기능을 더한 것
  • 자신의 속성(값, data)과 기능(동작, 행동)을 다른 것들 과 구분되어 식별 가능
    • Field : 속성
    • Method : 기능

클래스

  • 객체의 특성(속성, 기능)에 대한 정의
  • 추상화(abstraction), 캡슐화(encapsulation) 적용 필수
  • 설계서
  • 접근 제한자
    • public : 전체
    • default : 같은 패키지 내
  • class 선언
[접근 제한자] [예약어] class [class명] {
    // 1. 필드(인스턴스 변수, 멤버 변수): 객체의 속성 정의
    [접근 제한자] [예약어] [자료형] [필드명];

    // 2. 생성자
    [접근 제한자] [class명](매개변수) { // 위의 class명과 동일
        ...
        // 필드 조회, ...
    }

    // 3. 메소드: 객체의 기능 정의
    [접근 제한자] [예약어] [반환형] [메소드명](매개변수) {
        ...
    }
}

추상화(abstraction)

  • 유연성을 확보하기 위해 구체적인 것은 제거
  • 작성하려는 class의 속성과 기능 중 프로그램 내에서 필요한 공통점을 추출하고 불필요한 공통점은 제거하는 과정

캡슐화(encapsulation)

  • 추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법
  • class의 가장 중요한 목적인 데이터의 접근 제한을 원칙으로 하여 class 외부에서 데이터의 직접 접근을 막고, 대신 데이터 처리하는 함수들을 class 내부에서 작성하는 방법

Field(멤버 변수)

  • class 내에 정의 된 속성
  • 접근 제한자
    • public(+) : 해당 클래스 내부, 같은 패키지 내, 후손 클래스 내, 전체
    • protected(#): 해당 클래스 내부, 같은 패키지 내, 후손 클래스 내
    • default(~): 해당 클래스 내부, 같은 패키지 내
    • private(-): 해당 클래스 내부
[접근 제한자] [예약어] class [class명] {
    [접근 제한자] [예약어] 자료형 변수명 = [초기값];
}
public class Academy {
    public int temp1;
    protected int temp2;
    int temp3; //접근제한자 생략 시 default
    private int temp4; //캡슐화 원칙으로 private 사용
}

필드 예약어

1) static

  • 같은 타입의 여러 객체가 공유할 목적의 필드에 사용하며, 프로그램 시작 시에 정적 메모리(static) 영역에 자동 할당되는 멤버에 적용
  • 정적멤버, 클래스멤버라고 부름
  • 필드는 인스턴스 생성 시에 메모리에 저장되지만 static필드는 프로그램 시작할 때 바로 저장
    • 객체 생성하지 않고 바로 사용 가능
      • ex) Math / Arrays / System / …
public class Academy {
    private static int temp1;
}

2) final

  • 정해진 값 하나만 저장하는 변수
  • 변경 불가능
public class Academy {
    private final int TEMP1 = 100;
    private int temp4;
}

Categories:

Updated: