Archives
Recent Posts
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[7일차 Java] final 본문

Computer/Java

[7일차 Java] final

Wise-99 2023. 5. 6. 22:21

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Final이란?

  • 더이상 변경할 수 없다는 의미를 가지고 있다.

final 변수

  • final 변수 : 변수에 다른 값을 저장할 수 없다.
    • final 변수는 변수를 선언한 이후에 값을 저장할 수 없다.
    • 이에, 변수를 선언할 때 값을 저장해줘야 한다.
    • 상수 역할을 할 변수를 정의할 때 사용한다.

final 메서드

  • 자식 클래스에서 overriding이 불가능하다​

final 클래스

  • 상속이 불가능하다.
  • 무조건 객체를 생성해서 참조변수를 통해 접근할 수 있도록 하기 원할 경우 사용한다.

📖 예제 코드

public class MainClass {
	public static void main(String[] args) {
		
		TestClass1 t1 = new TestClass1();
		System.out.printf("t1.FINAL_VALUE : %d\n", t1.FINAL_VALUE); // 100
		
		t1.FINAL_VALUE = 200; <<< 불가능
	}
}

class TestClass1 {

	final int FINAL_VALUE = 100;
}

class SuperClass1 {
	public final void method1() {
		System.out.println("SuperClass1의 method1");
	}
}

class SubClass1 extends SuperClass1 {
	public void method1() {
		System.out.println("SubClass1의 method1"); <<< 불가능
	}
}

// final class
final class SuperClass2{
	
}

class SubClass2 extends SuperClass2 { <<< 불가능
	
}

✔️ Main Class 코드 해석

public class MainClass {
	public static void main(String[] args) {
		
		TestClass1 t1 = new TestClass1();
		System.out.printf("t1.FINAL_VALUE : %d\n", t1.FINAL_VALUE); // 100
		
		t1.FINAL_VALUE = 200; <<< 불가능
	}
}
  • System.out.printf("t1.FINAL_VALUE : %d\n", t1.FINAL_VALUE);
    • TestClass1에 있는 final 변수를 가져와 출력한다.
    • 100이 출력된다.
  • t1.FINAL_VALUE = 200;
    • FINAL_VALUE를 선언할 때 값(100)을 넣었기 때문에 변경되지 않는다.
    • 오류가 발생한다.

✔️ SuperClass1과 SubClass1 코드 해석

class SuperClass1 {
	public final void method1() {
		System.out.println("SuperClass1의 method1");
	}
}

class SubClass1 extends SuperClass1 {
	public void method1() {
		System.out.println("SubClass1의 method1"); <<< 불가능
	}
}
  • public void method1() { ...
    • SuperClass1의 final 메서드 오버라이딩을 시도하고 있다.
    • final 메서드는 자식클래스에서 오버라이딩이 불가능하다.
    • 오류가 발생한다.

✔️ SuperClass2와 SubClass2 코드 해석

// final class
final class SuperClass2{
	
}

class SubClass2 extends SuperClass2 { <<< 불가능
	
}
  • class SubClass2 extends SuperClass2 { ...
    • final 클래스는 상속이 불가능하다.
    • SuperClass2에 접근하려면 객체 생성을 통해 접근해야 한다.
    • 오류가 발생한다.

'Computer > Java' 카테고리의 다른 글

[7일차 Java] Abstract  (2) 2023.05.06
[7일차 Java] 중첩 클래스  (0) 2023.05.06
[7일차 Java] Static  (0) 2023.05.06
[6일차 Java] 캡슐화  (0) 2023.05.05
[6일차 Java] 접근 제한자  (2) 2023.05.05