스파이더 웹 개발

자바 final 키워드 본문

Java

자바 final 키워드

스파이더웹 2022. 7. 20. 13:45
728x90
반응형

final 필드

public class Test {

    final int number = 3;
   
    public void change(){
        number=5;
    }

}

final 키워드가 필드에 사용되면 해당 필드는 더 이상 수정이 불가하다.

위에 코드처럼 final 키워드가 붙은 필드를 선언해주고 메서드에서 값을 5로 대입하려 하지만 변경이 불가하여 컴파일 오류가 발생한다

final 객체

class Study {
    String subject = "국사";

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }
}

public class Test {

    public static void main(String[] args) {

        final Study study = new Study();
        Study study1 = new Study();

        //study = study1; 컴파일 오류 발생
        study1 = study;

        study.setSubject("국어");
        
    }

}

객체 변수에 final로 선언하면 그 변수에 다른 참조 값을 지정할 수 없다 즉, 한번 생성된 final 객체는 같은 타입으로 재생성이 불가능합니다. 객체자체는 변경이 불가능하지만 객체 내부 변수는 변경 가능합니다.

final 클래스

final class Car {
  
}

//상속 불가
class Bus extends Car{
    
}

클래스에 final을 사용하면 해당 클래스는 최종상태가 되어 상속할 수 없다

final 메서드

class Car {
    public final void start(){
        System.out.println("출발합니다");
    }
}

class Bus extends Car
//메서드 재정의 불가
    @Override
    public void start() {
        System.out.println("버스 출발");
    }
}

메서드에 final 키워드를 사용하면, 하위클래스에서 상위클래스의 메서드를 재정의 할 수 없다

728x90
반응형

'Java' 카테고리의 다른 글

Parameter와 Arguement의 차이  (1) 2022.07.20
클래스 변수, 인스턴스 변수, 지역 변수  (0) 2022.07.20
런타임 vs 컴파일 타임  (0) 2022.07.20
메서드와 함수의 차이  (0) 2022.07.20
부동 소수점 오차 문제점  (0) 2022.07.20
Comments