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 |