Java

자바 클래스

asd135 2024. 6. 17. 22:06
728x90

클래스 구성

필드:클래스 내에서 사용하는 데이터를 저장하는 변수

메서드: 클래스 내에 정의된 함수

생성자: 객체를 생성할 때 호출하는 메서드 객체를 생성할 때 자동으로 호출

접근 제어자: 클래스, 필드, 메서드에 대한 접근 권한을 설정

 

클래스 형식

[접근제어자] class [클래스이름] [extends 부모클래스이름] [implements 인터페이스 이름]
{
[데이터필드 선언]
[생성자 선언]
[메서드 선언] 
}

 

클래스 변수(메서드), 인스턴스 변수(메서드)

 

클래스 변수 특징

  • 해당 클래스의 모든 객체가 공유
  • 객체를 생성하지 않고 접근 가능
  • 주로 클래스 내부에서 공유되어야 하는 데이터를 저장하는 데 사용

클래스 변수 사용

A객체를 생성할 때마다 클래스 변수 i 1씩 증가

public class Main {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new A();
        System.out.println(A.i);
    }
}

class A {
    public static int i;

    A() {
        i++;
    }

}

 

 

클래스 메서드 특징

  • 객체 생성 없이 호출 가능
  • 클래스 메서드 내부에서 인스턴스 변수 사용 불가

클래스 메서드 예시로 Math 클래스의 max 메서드가 있다. 

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.max(1,5));
    }
}

 

 

인스턴스 변수

  • 객체마다 고유한 값을 가짐
  • 객체가 생성될 때 자동으로 초기화
  • 인스턴스 변수는 인스턴스 메서드 내에서 사용 가능

인스턴스 메서드

  • 인스턴스 메서드는 특정 객체에 종속적으로 동작, 즉 인스턴스 변수에 접근 가능
  • 인스턴스 메서드는 객체를 생성한 후에 호출 가능

 

클래스의 접근 제어자

 

public: 클래스를 어디에서든 접근할 수 있도록 허용

default: 클래스에 접근 제어자를 생략하면 기본적으로 default가 되고 명시적으로 default를 적으면 에러 발생

protected: 내부클래스에서만 사용가능, 같은 패키지 내에서와 해당 클래스를 상속받은 하위 클래스에서만 접근할 수 있도록 허용

private: 내부클래스에서만 사용가능, 해당 클래스에서만 사용가능