public class Modifier{
//순서는 상관없지만 보통 접근제어자를 맨 왼쪽에 적는다
public static final int WIFTH = 200;
public static void main(String[] args){
System.out.println("WIFTH="+WIFTH);
}
}
📌static - 클래스의, 공통적인
class StaticTest{
static int width = 200; //클래스변수(static변수)
static int height = 120; //클래스변수(static변수)
static{ //클래스 초기화 블럭
//static변수의 복잡한 초기화 수행
}
static int max(int a, int b){ //클래스 메서드(static메서드)
return a> b? a: b;
}
}
📌final - 마지막의, 변경될 수 없는
final class FinalTest{ //조상이 될 수 없는 클래스
final int MAX_SIZE = 10; //값을 변경할 수 없는 멤버변수(상수)
final void getMaxSize(){ //오버라이딩할 수 없는 메서드(변경뷸거)
final int LV = MAX_SIZE;//값을 변경할 수 없는 지역변수(상수)
return MAX_SIZE;
}
}
📌abstract - 추상의, 미완성의
abstract class AbstractTest{ //추상 클래스(추상 메서드를 포함한 클래스)
abstract void move(); ..추상 메서드(구현부가 없는 메서드)
}
AbstractTest a = new AbstractTest(); //에러! 추상클래스의 인스턴스 생성불가!
//추상 클래스를 상속받아서 완전한 클래스를 만든 후에 객체 생성 가능
- private 같은 클래스 내에서만 접근이 가능하다
- (default) 같은 패키지 내에서만 접근이 가능하다
- protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다
- public 접근 제한이 전혀 없다
✔ public > protected > (default) > private