JAVA - final

Luna·2022년 12월 5일
0

JAVA

목록 보기
10/32

final

  • public static final
  • public final class{ } : 형태가 있다. 변수들, 메서드들을 갖고 있다. 추가 불가능.
    추가(확장)을 하려면 상속을 받아서 확장(extends)해야 하는데 final은 확장 불가(상속불가).
  • public final 변수명 : 초기값 세팅 후 변경이 불가능 -> 상수
  • public final 메서드명() : 메서드 변경 불가. 부모 클래스의 메서드를 재정의(oberride) 할 수 없다.

예제

부모 클래스

public class Super {
	public final void print() {	
	}
}
  • public final class Super {} 라고 final을 붙이게 되면 상속 받을 때 오류가 난다.
  • print() 메서드 앞에는 final이 붙었기 때문에 상속해서 재정의(변경) 할 수 없다.

자식 클래스

// 자식 클래스
// extends - 확장해서 쓴다. -> 상속 : Super 클래스를 상속 받음.
public class Sub extends Super{

	final int NUMBER = 100;
	
	// override (재정의) : final 붙인 메서드는 override 불가.
//	public void print() { // 부모클래스의 메서드와 같이 쓰려면 public을 써야한다
						  // 부모 클래스의 메서드에 final이 붙어서 사용 불가.
	
	public void printData() { 
		super.print(); // 부모 클래스를 먼저 실행하고 출력하고 그 다음 밑의 코드를 출력한다.
		
		// final 변수에는 값을 변경 할 수 없다.
//		number += 100;
		System.out.println(NUMBER);
		
		// 연산은 가능
		int number = NUMBER + 100;
		System.out.println(number);
	}
}
  • 어떤 클래스를 상속 받으려면 클래스명 뒤에 extends 상속받을클래스명을 쓰면 된다.
  • final이 붙은 메서드인 print() 메서드는 재정의(override) 할 수 없다.
  • 새로운 메서드인 printDate() 만든 다음 그 안에서 super.print()를 하여 부모 클래스를 먼저 실행하고, 출력하고 그 다음 코드를 출력한다.
System.out.println(NUMBER);
  • final 변수인 NUMBER는 값을 변경 할 수 없다.
  • NUMBER += 100; 이런식으로 코드를 쓴다면 오류가 난다.
int number = NUMBER + 100;
System.out.println(number);
  • final 변수의 값을 변경 할 수는 없지만 새로운 변수 number를 만들어서 연산 후 저장은 가능하다.

0개의 댓글