static 과 static final의 차이
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
Static에 대해 알아보자
안녕하세요 델리만쥬입니다~! 프로그래밍을 할수록, 기본이 얼마나 중요한지 느끼고 있습니다. static에 대한 예약어를 보다가 순간 static이 정확히 뭐였지? 라는 생각이 들어서 정리해보자 합니다. 프로그래밍은..
ibks-platform.tistory.com
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을 포함해서 선언한 변수는 객체가 아니라 클래스에 속한다라는 의미를 가지고 있습니다.객체마다 값이 바뀌는 것이 아닌 클래스에 존재하는 상수이므로 선언과 동시에 초기화를 해주어야하는
클래스 상수라고 이번 포스팅을 통해 좀 더 명확하게 이해할 수 있었습니다!