제한자
1. 접근제한자
public > protected > 생략 > private
2. 기타제한자- static (클래스, 지역변수 불가)- final- abstact
Static
1. 변수
- 전역 변수 앞에만 사용 가능
- 객체 생성 없이 외부에서 class이름.변수이름 호출 가능
- static 변수는 같은 class들이 공유하는 공유 변수
예시)
System.out
System.in
2. 메소드
- 객체생성 없이 class이름.mehtod이름( ); 으로 호출 가능
- static method는 일반(static이 없는) method 호출 안 됨.
- static method는 static method만 호출 가능.
- static method안에서 this 키워드 사용 안 됨.
⇨ 같은 class 내에 static method 호출할 때 => method이름( [값, ... ] );
예시)
int no = Integer.parseInt(”A”);
String s = Integer.toString(4);
double no = Math.random();
public class Integer{
public static int parseInt(String s) { return i; }
public static String toString(int i) { return s; }
}
public class Math{
public static double random() { return d; }
}
// Integer.메소드, Math.메소드 형식으로 쓸 수 있었던 것은 static이 붙어있기 때문
// 어디서나 불러서 쓰니까 public
3. 클래스 - 앞에 올 수 없음
- Inner Class에는 사용 가능
4. static 블럭
- class 내부에 선언되어 main method보다 먼저 실행 됨.
- method, 생성자 등의 영역 안에서는 선언 될 수 없음.
- 주로 사전 초기화 작업, DB 연결, 환경설정 및 세팅, 데이터로딩에 사용
- 최초에 딱 한 번만 실행됨
static {
System.out.println("메인보다 먼저 실행");
}
Final
1. 변수
- 값 변경 불가
- 지역 변수, 전역 변수 둘 다 가능
- 초기값 필수 (자동 초기화 안 됨)
2. 메소드
- 재정의(Overriding) 불가능
3. 클래스
- 상속 불가능 (생성은 가능)
Abstract
미완성된 코드, 아직은 추상적이라는 의미 -> 누군가 가져가서 구체화한 뒤 사용하는 용도
1. 변수 - 앞에 올 수 없음
2. 메소드
- 기능이 없음
public abstact void aa(); // 끝
// sub class에서 재정의 하기 위해 존재
3. 클래스
- 생성할 수 없음 (상속만 가능)
- abstract method가 있는 부모를 상속 받으면 자식 클래스는 반드시 abstract method를 재정의해야 함.
그렇지 않으면 자식 클래스도 abstract 선언 해야 함.
public abstract class Employee{}
new Employee(); // 불가능
Employee emp [] = new Employee[5]; // 객체가 아니라 배열방을 생성한 것이므로 가능
'개발 > JAVA' 카테고리의 다른 글
[JAVA] toString() 오버라이딩으로 원하는 값 출력하기 (0) | 2023.03.29 |
---|---|
[JAVA] System.currentTimeMillis()와 System.nanoTime()으로 시간 측정하기 (0) | 2023.03.29 |
댓글