public class ExFinalStatic extends TestStatic{
public void testMethod() {}
}
class TestStatic{
public final void testMethod() {
}
}
안녕하세요 남산케이블카입니다~
당분간 포스팅의 주제는 기본을 토대로 한번 더 개념을 잡아나가는 것에 집중하려고 합니다.
Java로 코딩을 하다보면 static final을 사용하게 되는데요 static 과 static final의 차이를 한번 살펴보려고 합니다!
만약 static에 대해 모른다면 아래 포스트 참고!
https://ibks-platform.tistory.com/288
final은 마지막/최종이라는 의미인거처럼 java에서는 final 키워드는 상수, 메소드, 클래스를 정의한 후
변경하지 못하게 할때 사용합니다.
- final 키워드
1) 상수정의에 사용
final int a;
Scanner s = new Scanner(System.in);
a = s.nextInt();
System.out.println(a);
a = 10;
System.out.println(a);
final 키워드로 int형 변수 a를 선언한 뒤, 사용자 입력 값을 받아 출력하는데까지는 지장이 없다.
하지만 a=10 처럼 새로운 값을 재할당하는 순간 컴파일 에러가 납니다.
2) 메소드에 사용
- 메소드의 오버라이딩(재정의)가 금지
public class ExFinalStatic extends TestStatic{
public void testMethod() {}
}
class TestStatic{
public void testMethod() {
}
}
위와 같이 TestStatic 클래스의 메소드가 final 키워드가 붙어 있지 않으면, 해당 클래스를 상속받는 다른 클래스에서
메소드의 재정의가 가능합니다.
public class ExFinalStatic extends TestStatic{
public void testMethod() {}
}
class TestStatic{
public final void testMethod() {
}
}
하지만, 위와 같이 final 키워드를 사용한다면, 컴파일 에러가 발생하게 됩니다.
public class ExFinalStatic extends TestStatic{
}
final class TestStatic{
public final void testMethod() {
}
}
또는 class에 final 키워드를 사용하게 된다면 ExFinalStatic 클래스는 TestStatic 클래스를 상속받을수 없게 됩니다.
(컴파일 에러 발생)
Static Final 이란 ?
static은 클래스 변수이다. static final은 객체(인스턴스)가 아닌 클래스에 존재하는 단 하나의 상수입니다.
즉, static을 포함해서 선언한 변수는 객체가 아니라 클래스에 속한다라는 의미를 가지고 있습니다.객체마다 값이 바뀌는 것이 아닌 클래스에 존재하는 상수이므로 선언과 동시에 초기화를 해주어야하는
클래스 상수라고 이번 포스팅을 통해 좀 더 명확하게 이해할 수 있었습니다!
'Programming > Java' 카테고리의 다른 글
[Java] Optional 사용하기 (0) | 2020.06.16 |
---|