TIL) Java - 제어자, static, final, abstract

oatraspberry·2022년 12월 10일
post-thumbnail

자바 제어자(modifier)

클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여
하나의 대상에 여러 제어자를 같이 사용 가능(접근 제어자는 하나만)

public class ModifierTest {
	public static final int WIDTH = 200;
	// public static final = 제어자, 접근제어자를 제일 왼쪽에다 씀
	public static void main(String[] args) {
    	System.out.println("WIDTH="+WIDTH);
    }
}

접근제어자

사용하는 이유

  • 외부로부터 데이터를 보호하기 위해서
  • 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서

멤버 및 생성자의 접근제어자

public

동일 패키지의 모든 클래스 + 다른 패키지의 모든 클래스에서 사용 가능

protected

동일 패키지의 모든 클래스 + 다른 패키지의 자식 클래스에서 사용 가능

default

동일 패키지의 모든 클래스에서 사용 가능

private

동일 클래스에서만 사용 가능

클래스의 접근제어자

public

default

default는 다른 패키지에서 import 자체가 불가능
다른 패키지에서 사용하려면 public 클래스 선언

생성자의 접근제어자

컴파일러가 자동 생성하는 기본생성자의 접근제어자는 클래스의 접근제어자와 동일
public 클래스의 자동 추가 생성자는 public 생성자

public 클래스 + default 생성자

public class A { // public 클래스
	A() {
    } // default 생성자
}

static - 클래스의, 공통적인, 고정된

객체 없이 사용 가능

  • 멤버변수

    	- 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.
    • 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다.
    • 클래스가 메모리에 로드될 때 생성된다.
  • 메서드

    	- 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
    • static 메서드 내에서는 인스턴스 멤버(iv, 인스턴스 메서드)들을 직접 사용할 수 없다.

final - 마지막의, 변경될 수 없는

  • 클래스
    - 변경될 수 없는 클래스. 확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
  • 메서드
    - 변경될 수 없는 메서드. final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.
  • 멤버변수, 지역변수
    - 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다.

abstract - 추상의, 미완성의

  • 클래스
    - 클래스 내에 추상 메서드가 선언되어 있음을 의미함.
  • 메서드
    - 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다.
abstract class AbstractTest { // 추상 클래스(추상 메서드를 포함한 클래스)
	abstract void move(); // 추상 메서드(구현부가 없는 메서드)
profile
개발자가 될테야

0개의 댓글