강잇
강이의 개발블로그
강잇
전체 방문자
오늘
어제
  • 분류 전체보기 (102)
    • Langauge (32)
      • Java-basic (29)
      • Java (3)
    • SpringBoot (7)
    • Algorithm (5)
      • BAEKJOON (5)
    • WEB (7)
      • HTML & CSS (7)
    • DB (1)
      • MySQL (1)
    • OS (17)
      • Mac (2)
      • Linux (4)
      • Terminal Command (11)
    • Computer Science (7)
      • Hard ware (1)
      • Database (1)
      • Data structure (2)
      • Algorithm (2)
      • Network (1)
    • Git (5)
      • 개념 (1)
      • 활용 (1)
      • Trouble Shooting (2)
    • ETC. (13)
      • Install (6)
      • IntelliJ (1)
      • Eclipse (2)
      • Error (3)
      • Tip (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • CSS 박스 크기 설정
  • til
  • 알고리즘 공부
  • 백준
  • 메서드
  • 메소드
  • CSS 속성

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
강잇

강이의 개발블로그

Langauge/Java-basic

[Java] final 키워드

2022. 7. 25. 02:18

final 변수

  • final 키워드는 변수를 선언할 때 지정하며, 한 번 초기화된 값은 최종값으로 재할당할 수 없다. (변경 불가)
  • 변경의 범위는 그 변수의 값에 한정된다.
  • 클래스 내의 필드는 초기화를 하지 않으면 자동으로 강제 초기화가 되지만 final 변수는 강제 초기화되지 않는다. (지역 변수, 필드 관계없음)
  • final로 선언된 변수는 초기화될 때 상수 영역에 필드와 값이 복사된다.
final 자료형 변수명;

// 예시
public class Main {
    public static void main(String[] args) {
        final MyClass1 mc = new MyClass1(10, 10); // num1 = 10, num2 = 10
        mc.num1 += 10; // '변경의 범위는 그 변수의 값에 한정된다'의 의미 -> num1 = 20
    }
}
class MyClass {
    int num1; // 필드는 초기화하지 않아도 강제 초기화됨
    final int num2; // 강제 초기화가 되지 않기 때문에 초기화해야함

    MyClass(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2; // 초기화된 순간부터 재할당(변경) 불가능
    }
}

final 메서드

  • final 키워드가 붙은 메서드는 최종 메서드라는 의미를 지닌다.
  • final 메서드로 선언하게 되면 상속을 받은 하위클래스에서 오버라이딩을 할 수 없게 된다.(변경 불가)
final 리턴 타입 메서드명(매개변수) {
}

// 예시
class MyClass1 {
    final void myMethod() {
        System.out.println("MyClass1 : myMethod");
    }
}
class MyClass2 extends MyClass1 {
    
    @Override
    void myMethod(){ // 오버라이딩 불가, 예외 발생
        System.out.println("MyClass2 : myMethod");
    }
}

final 클래스

  • 위와 같은 개념으로 최종 클래스라는 의미를 지니며, final 클래스는 상속 자체가 불가능하다.
final 클래스명 {
}

// 예시
final class MyClass1 {
    ...
}

class MyClass2 extends MyClass1 { // 상속 불가, 예외 발생
}
저작자표시

'Langauge > Java-basic' 카테고리의 다른 글

[Java] 업 캐스팅과 다운 캐스팅  (0) 2022.07.30
[Java] 상속 관계와 포함 관계  (0) 2022.07.29
[Java] static 키워드  (0) 2022.07.24
[Java] 접근 제어자 public / protected / default / private  (0) 2022.07.23
[Java] 이너 클래스  (0) 2022.07.22
    'Langauge/Java-basic' 카테고리의 다른 글
    • [Java] 업 캐스팅과 다운 캐스팅
    • [Java] 상속 관계와 포함 관계
    • [Java] static 키워드
    • [Java] 접근 제어자 public / protected / default / private
    강잇
    강잇
    학습한 내용을 정리 및 기록하는 블로그

    티스토리툴바