본문 바로가기

백엔드/자바

클래스

반응형

클래스는 객체지향 프로그래밍에서 객체가 가지는 특징이나 행동패턴 등을 규정하는 틀입니다 (그래서 클래스를 쿠키커터라고도 함). 클래스는 특성을 규정하는 필드, 행위를 규정하는 매서드, 클래스 생성에 필요한 생성기를 가집니다. 클래스의 개념은 사용하는 언어가 다르더라도 대동소이하지만 사용법은 언어마다 조금씩 다르므로 오늘은 자바 클래스를 다루어보겠습니다.

목차

자바클래스는 기본적으로 아래와 같은 구조를 가집니다.

public class Person {
    private String firstName;
    private String lastName;
    private int age;
    
    public Person() {
    }

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {    
        this.age = age;            
    }        
}

모디파이어

클래스 및 클래스 내 필드 및 매서드에 대한 접근범위를 규정하며 코드라인에서 가장 앞에 위치함

모디파이어 허용범위
Public 같은 프로젝트 내 모든 클래스의 접근을 허용
Protected 같은 패키지 내 모든 클래스 또는 다른 패키지에 속하는 그 하위 클래스의 접근을 허용
default (모디파이어 생략 시) 같은 패키지 내 모든 클래스의 접근을 허용
Private 다른 클래스의 접근을 허용하지 않음

필드접근 제한하기

일반적으로 클래스는 퍼블릭으로 하되 클래스에 규정된 필드는 다른 클래스가 접근할 수 없도록 프라이빗으로 설정합니다. 이를 encapsulation이라고 하는 데 필드에 직접적으로 값을 설정하거나 변경하는 것을 방지함.

▶ 겟터, 셋터

위처럼 필드접근을 제한하는 경우 각 필드의 값을 지정하고 가져오기 위한 방법으로 값 지정을 위한 겟터, 지정된 값을 가져오는 셋터 메서드를 생성함.

초기화 (인스턴스화)

Person person = new Person();

 

초기화하고 값을 지정하지 않은 경우 원시데이터 타입은 아래와 같이 기본값이 설정됨.

타입 기본값
boolean false
byte 0
short
int
long
char
double 0.0
float

생성기

클래스 초기화에 사용되며 초기화할 때 필드값 지정에 사용가능함. 기본적으로 매개변수를 가지지 않는 기본 생성기를 가지지만 매개변수를 가지는 생성기를 추가로 설정하는 경우 매개변수를 가지지 않는 생성기도 따로 지정을 해 주어야 사용가능함

스태틱 vs 인스턴스

클래스의 필드나 메서드는 스태틱 또는 인스턴스로 구분할 수 있습니다. 구분은 Static이라는 키워드를 사용하며 차이점은 아래와 같습니다.

스태틱

1. 클래스 단위로 생성되며 스테틱으로 규정된 필드나 메서드는 클래스 메모리를 공유

2. 인스턴스 없이 호출가능하며 클래스명 뒤에 닷 노테이션으로 호출하는 것이 일반적

3. 스태틱 메서드는 This 키워드 사용불가

4. 인스턴스 필드 및 메서드 사용불가 (스태틱을 호출하려면 호출하는 메서드나 클래스도 스태틱이어야 함)

인스턴스

1. 초기화 후 지정된 변수를 통해서만 접근가능

2. 인스턴스화된 객체별로 값이 할당됨

이상으로 자바 클래스를 살펴보았습니다.

 

728x90
반응형

'백엔드 > 자바' 카테고리의 다른 글

자바: 에러: release version 21 not supported  (0) 2023.12.30
상속  (0) 2023.12.28
스위치  (0) 2023.12.26
스프링 부트 폼  (1) 2023.10.22
롬복  (0) 2023.10.07