Java final
자바의 예약어 중 간혹 등장하는 final
이 무엇인지 알아보고 어디에 사용되는지 학습한다.
final과 변수
final은 앞으로 더이상 변하지 않는 변수, 메소드, 클래스를 정의하는데 사용된다.
public static void main(String[] args) {
int num = 10; //변수
fianl int num2 = 20; //변수를 상수로 변경
num = 30;
System.out.println(num); //num이 30으로 변경된다.
num2 = 40; //에러가 난다.
}
final을 사용하면 변수가 아닌 변경할 수 없는 상수가 되기 때문에, 값을 변경하려 하면 에러가 난다.
final과 class
final은 변수에만 사용되는 것이 아니다.
Super.java
final class Super{
//final로 정의된 Super 클래스
}
Child.java
class Child extends Super{
//에러가 난다.
}
final로 정의된 class는 더이상 상속할 수 없다.
때문에 final
로 정의된 Super
클래스는 상속될 수 없고, 이를 상속한 Child
클래스는 에러를 발생 시킨다.
final과 method
final은 메소드에도 사용이 가능하다.
Super.java
class Super{
public void method(){
System.out.println("Super Class method!");
}
final public void finalMethod(){
System.out.println("Super Class final method!");
}
}
Child.java
class Child extends Super{
public void method(){
System.out.println("Child Class method!");
}
//에러가 발생한다.
public void finalMethod(){
System.out.println("Child Class final method!");
}
}
fianl을 선언하면 더이상 변경하지 않겠다는 의미이기 때문에 final로 정의된 메소드는 상속 후 오버라이딩 될 수 없다.
정리
final로 선언된 변수, 메소드, 클래스는 더이상 변경될 수 없다는 의미를 가지며 메소드는 하위 클래스에서 오버라이딩 될 수 없고, 클래스는 더이상 상속을 할 수 없다.
출처 : https://qkrrudtjr954.github.io/java/2017/11/20/java-final.html
'객체와 객체 지향 프로그래밍' 카테고리의 다른 글
Java 메소드 (0) | 2018.06.20 |
---|---|
Java 접근 지정자 (0) | 2018.06.20 |
Java 다형성 ( 오버로딩, 오버라이딩 ) (0) | 2018.06.20 |
객체와 객체 지향 프로그래밍 (0) | 2018.06.20 |
Java 의 Main Method (0) | 2018.06.20 |