Modifier
abstract
내용은 없이 선언만 한다는 의미
final
선언한 값을 더이상 수정할 수 없음. 메소드에 사용할 경우 overide할 수 없는 상태가 됨. class에 사용하면 extends안됨
native
메소드 앞에만 가능. 이 메소드의 구현은 자바가 아닌 c로 되어있음
static
객체가 사용하는 필드가 아니라 class에서 사용하는 필드가 됨
synchronized
멀티 쓰레드 환경에서 동시 접근하는 것을 막음
transient
메모리에서만 값을 유지
volatile
멀티 쓰레드 환경에서 쓰임. 특정 상황에서 동시 접근할 때 값이 잘못되어 깨질 수 있는 문제를 해결. 캐쉬메모리를 통해 사용하지 않음
strictfp
java의 floating 연산은 하드웨어를 이용해 계산하는데, 컴퓨터 환경마다 값이 다를 수 있으므로 해당 modifier로 동일하게 만들어 줌
범위 제한자
private
같은 class에서만 사용
protected
같은 class 또는 상속 받은 class에서 사용 가능
public
모든 class에서 사용 가능
안 붙일 때
packaged. 동일한 package에서만 사용 가능. 상속을 받더라도 같은 패키지가 아닐 경우 사용 불가능
static Keyword
- static은 변수, 메소드, 내부 클래스에 쓸 수 있다
- static이 붙은 변수와 메서드는 객체에 속하지 않고 클래스에 속한다
- static 변수나 메서드는 class attribute 또는 class method로서 class members라고 불린다
- class가 로딩되는 시점에 초기화 됨
- 한 곳에만 값이 존재하므로 모든 곳에서 같은 값을 가짐
- 더 이상 삭속되지 않음
- 오버라이딩 할 수 없다
- 값이 변경되지 않는 상수
- 오직 한 번 값을 할당 가능
- 선언만 되어 있고, 초기화 되지 않은 final 변수를 blank variable이라 부름
단일 상속
자바는 멀티 상속을 지원하지 않는다. 클래스는 오직 하나의 클래스로부터 상속 받는다.
super Keyword
- 상위 클래스의 객체를 가리킨다
- super는 하위 클래스에서 상위클래스의 멤버 변수와 메서드에 접근할 때 사용된다
- 바로 상위 클래스에 없을 경우 계층 구조를 따라 더 올라간다
- super(...)와 같은 방법으로 접근한다.
다형성(polymorphism)
- 다형성은 많은 다른 형태를 가질 수 있는 성질을 말함. 예를 들어 Manager 클래스는 Employee 클래스의 성질을 가진다
- 하나의 객체는 오직 하나의 형태만을 가진다
- 레퍼런스 변수는 다른 여러 형식의 객체를 가리킬 수 있다
여러 가지 다른 형태의 객체들의 집합체
Employee [] staff = new Employee[100];
staff[0] = new Manager();
staff[1] = new Employee();
...
같은 형태의 집합체를 Homogeneous Collection이라고 함
Override Method
- super에 정의 되어 있는 메서드를 sub에서 다시 정의하여 사용하는 것
- method 앞에 @Override annotation을 붙임
Rules
리턴 타입은 반드시 오버라이딩 할 메서드와 일치해야 한다
접근지정자는 오버라이딩할 메서드보다 폐쇄적일 수 없다
virtual Method Invocation
Virtual Method
메서드의 구현 내용을 빼고 정의
가상 메서드가 있는 클래스는 virtual class로 정의해야 됨
Overloading Method
같은 이름의 메서드를 여러 타입의 인자로 여러 개의 메서드로 사용
public Sum(int a);
public Sum(float f);
public Sum(double d);
...
댓글