본문 바로가기

Programming/Java

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을 포함해서 선언한 변수는 객체가 아니라 클래스에 속한다라는 의미를 가지고 있습니다.객체마다 값이 바뀌는 것이 아닌 클래스에 존재하는 상수이므로 선언과 동시에 초기화를 해주어야하는
클래스 상수라고 이번 포스팅을 통해 좀 더 명확하게 이해할 수 있었습니다!

 

'Programming > Java' 카테고리의 다른 글

[Java] Optional 사용하기  (0) 2020.06.16