본문 바로가기

자바(java)

Final(변수, 메서드, 클래스)

final 키워드는 변수, 메서드, 클래스에 사용될 수 있다. 

 

final 변수

 - 변수에 final을 붙이면 상수가 된다.(한 번 할당하면 수정 불가)

 - 상수 선언 시, 상수명은 전부 대문자로, 띄어쓰기대신 _(언더바) 처리해야 한다.

 - 상수의 초기화는 상수 선언 시에 해도 되고, 생성자 안에서도 가능하다.

public class Test {
	private final int HERO_LEVEL_1_ATTACK_POWER = 10;
	private final int HERO_LEVEL_2_ATTACK_POWER;
	public Hero( ){
		HERO_LEVEL_2_ATTACK_POWER = 20;
	}

	public Hero(int a){
		HERO_LEVEL_2_ATTACK_POWER = a;
	}
}

final 메서드

 - 클래스에서 메서드에 final을 붙이면, 절대로 오버라이딩 할 수 없는 메서드가 된다.

   -> 부모클래스가 구현한 그대로 사용해야 한다.

public abstract class Animals { // 부모클래스
	
	public void me1() {
		System.out.println("오버라이딩 해도 되고 안 해도 되고"
				+"안 해도 되고");
	}
	
	public abstract void me2(int a, String b);
	
	public final void me3() { // final 을 붙이면 오버라이딩 불가
		System.out.println("절대로 오버라이딩하면 안 되는 메서드");
	}
}
---------------------------------------------------------------
public class Cat extends Animals{ // 자식클래스

	@Override
	public void me2(int a, String b) {
		System.out.println("자식클래스에서 반드시 오버라이딩 함.");
	}
}

 

 

final 클래스

- 클래스에 final을 붙이면, 해당 클래스는 자식클래스를 만들지 않겠다는 의미.

public final class God { //파이널 부모클래스

	public void power() {
	}
}
----------------------------------------
public class Person extends God { // God클래스가 final 클래스라서 상속 불가

}
public class String2 extends String { // String 클래스가 final클래스라서 상속 불가

	
}
public class Character2 extends Character { // Character가 fanial클래스라서 상속 불가
	
	public char parseChar(String msg) {
		return msg.charAt(0);
	}
}

 

 

'자바(java)' 카테고리의 다른 글

DTO(Data Transfer Object) 클래스  (0) 2023.03.09
인터페이스(Interface)  (0) 2023.03.09
상속 (Inheritance)  (0) 2023.03.09
String 클래스  (0) 2023.03.07
스태틱(클래스)변수와 인스턴스변수  (0) 2023.03.06