3. JAVA - 클래스

hsso_o·2024년 7월 9일
0

스터디

목록 보기
11/44

클래스

  • 서로 다른 타입의 데이터(필드)와 행동(메소드)를 정의하여 만든 사용자 정의의 자료형
  • 객체를 추상화한 것으로 인스턴스를 생성할 목적으로 정의 해놓은 소스코드 작성 단위
  • 다른 곳에서의 클래스 필드에 접근하기 위해 '.'(참조연산자) 활용

💡 클래스

  • 속성 + 기능
  • 변수 → 배열 → 배열확장판(구조체)
  • 클래스 자체가 자료형(type)
  • 객체를 생성하기 위한 도구

객체와 객체 간의 상호작용은 메소드를 통해 이뤄짐. (서로 호출하며)

public class Car {

    // 필드
    String color;
    String model;
    int year;

    // 생성자
    public Car(String color, String model, int year) {
        this.color = color;
        this.model = model;
        this.year = year;
    }

    // 메서드
    public void startEngine() {
        System.out.println("Engine started");
    }

    public void stopEngine() {
        System.out.println("Engine stopped");
    }
}
  • 필드 : 클래스 관련 값 저장
  • 메소드 : 클래스의 행동 정의하는 함수들
  • 생성자 : 객체를 초기화하는 메소드

생성자

  • 객체가 new연산자를 통해 Heap 메모리 영역에 할당될 때, 1회성으로 호출되는 리턴 타입이 없는 메소드
  • 인스턴스를 생성할 때 필드 초기화 목적으로 호출하는 함수(반환형 X)
  • 생성자명과 클래스명이 동일해야 함
  • 기본 생성자/매개변수 있는 생성자
public class Car {
    String color;
    String model;
    int year;

    // 기본 생성자
    public Car() {}

    // 매개변수가 있는 생성자
    public Car(String color, String model, int year) {
        this.color = color;
        this.model = model;
        this.year = year;
    }

static

  • 여러 인스턴스가 공유해서 사용할 목적인 속성이나 필드에 사용
  • 정적 메모리 영역에 프로그램이 시작될 시 할당하고자 할 때 사용하는 키워드
  • 인스턴스 생성 없이 클래스명을 통해 접근 가능

final

  • 변경 불가의 의미를 담고 있는 키워드
  • 한 번 할당된 final 변수의 값 변경 불가
  • 클래스 필드의 final 변수는 선언과 동시에 초기화 하거나 생성자를 통한 초기화 필요

싱글톤 패턴(singleton pattern)

  • 클래스의 인스턴스 사용 시, 메모리 공간에 있는 하나의 인스턴스를 공유해서 사용하는 디자인 패턴(생성된 하나의 인스턴스만을 사용)

변수 종류

변수생성시기소멸시기
클래스 변수프로그램 시작 시프로그램 종료 시
인스턴스 변수인스턴스 생성 시참조하지 않을 시 (GC 소관)
지역 변수메소드 호출 시메소드 종료 시
  • 클래스 변수 : static 키워드를 가지고 필드에 선언하는 변수, 메모리의 static영역 사용
  • 멤버 변수(인스턴스 변수) : static 키워드 없이 필드에 선언하는 변수, 메모리의 heap영역 사용
  • 지역 변수 : 메소드, 생성자, 초기화 블록 내부에서 선언하는 변수

초기화 블럭

  • 해당 클래스의 인스턴스 생성 시, 어떠한 생성자를 활용해서 인스턴스를 생성하더라도 공통적으로 실행될 코드를 작성할 수 있는 블럭
  • 목적
    • 생성자에서 공통적으로 수행해야 하는 초기화 작업을 분리하여 코드의 중복을 줄임
    • 가독성을 높이는 데 유용
public class Car {
    static String manufacturer;

    // 클래스 초기화 블록
    static {
        manufacturer = "Generic Manufacturer";
        System.out.println("Static initialization block executed");
    }

    String color;
    String model;
    int year;

    // 인스턴스 초기화 블록
    {
        color = "unknown";
        model = "unknown";
        year = 0;
        System.out.println("Instance initialization block executed");
    }
}
  • 인스턴스 변수

    • 객체가 생성될 때마다 실행되며, 인스턴스 필드를 초기화하는 데 사용
  • 클래스 초기화 블럭

    • 클래스가 처음 로드될 때 한 번만 실행되며, 주로 static 필드를 초기화하는 데 사용
    • static 초기화 블럭은 static 변수만 초기화가 가능하며 다른 초기화 블럭보다 먼저 실행
profile
아뇨 소혠데요-

0개의 댓글