[JAVA] 자바 제어자

김나우·2022년 1월 4일
0

Java

목록 보기
5/15

참고 도서
Do it 자바 완전정복

자바 제어자

자바 제어자는 클래스, 필드, 메서드, 생성자 등에게 어떠한 특징을 부여하는 문법 요소다.

멤버 및 생성자의 접근 지정자

멤버 및 생성자에는 public, protected, default, private라는 4가지의 종류의 접근 지정자를
사용할 수 있다
만약 아무것도 사용하지 않으면 default 접근 지정자가 자동으로 설정된다

class Test{
	public int a;
    protected int b;
    int c				// default
    private int d;
    
    public void a(){}
    protected void b(){}
    void c(){}
    private void d(){}
}

사용 범위 : public > protected > default > private

접근 지정자 사용 가능 범위
public 동일 클래스의 모든 클래스 + 다른 패키지의 모든 클래스에서 사용 가능
protected 동일 패키지의 모든 클래스 + 다른 패키지의 자식 클래스에서 사용 가능
default 동일 패키지의 모든 클래스에서 사용 가능
private 동일 클래스에서 사용 가능

static 제어자

static은 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용하는 제어자다.
인스턴스 멤버는 멤버 앞에 static이 부터 있지 않은 것을 말하고
앞에 static이 붙어 있는 멤버를 정적 멤버 라고 한다

calss A{
	int m = 3;			// 객체를 생성한 후 사용 가능
    static int n = 5;	// 객체 생성 없이 사용 가능
}

인스턴스 메서드와 정적 메서드

인스턴스 메서드와 정적 메서드도 인스턴스 메서드는 반드시 객체를 생성한 후 사용할 수 있지만
정적 메서드는 클래스명으로도 바로 접근할 수 있고, 인스턴스 메서드처럼 객체로도 호출할 수 있다.

class A{
	void abc(){
    	System.out.println("instance 메서드");
    }
    void bcd(){
    	System.out.println("static 메서드");
    }
}

A a = new A();
a.abc	// 인스턴스 메서드

A.bcd()	// 정적 메서드
a.bcd	// 정적 메서드

정적 메서드 안에서 사용할 수 있는 필드와 메서드

정적 메서드 내에서는 정적 필드 또는 정적 메서드만 사용할 수 있다.
인스턴스 메서드 내에서는 인스턴스 멤버와 정적 멤버 모두 사용할 수 있다.

profile
안녕하세요

0개의 댓글