- Final 제한자
final 제한자 : 변경 불가의 의미.
final(종단) 클래스 : 상속불가 클래스. 다른 클래스의 부모클래스가 될 수 없다.
final(종단) 메서드 : 오버라이딩 불가 메서드.
final 변수(상수) : 변경 불가 변수.(설정된 값을 변경 할 수 없다.)
상수(const 사용안함)
final 멤버 변수는 생성자에서 한번 값을 설정 할 수 있다.
=> 명시적 초기화 안된 경우만 가능
=> 객체별로 다른 상수값을 가질 수 있다.
final, abstract는 반대의 의미를 가진다.
📌
package chap7;
class FinalVlaue {
final int NUM;// 처음 값을 선언할때 값을 넣어주면 상관이 없으나 값을 넣지 않은채 인경우 생성자에서 값을 한번은 변경 가능하다.
final int[] ARR; //ARR 참조변수
FinalVlaue(int num) {
this.NUM = num; //상수값 초기화. 객체별로 다른 상수값 설정
this.ARR = new int [5]; //한번 객체를 만들면 다른 객체 참조 불가
for(int i=0;i<ARR.length;i++) {
ARR[i] = (i+1)*10;
}
}
}
public class FinalVlaueEx1 {
public static void main(String[] args) {
final int NUM = 100;
System.out.println(NUM); // 상수는 대문자로 정하는 것이 권장사항
//오류: NUM=200; //NUM 상수 값은 변경 불가.
System.out.println(NUM);
FinalVlaue f1 = new FinalVlaue(10);
FinalVlaue f2 = new FinalVlaue(20);
System.out.println(f1.NUM);
System.out.println(f2.NUM);
for(int a : f1.ARR)
System.out.print(a+",");
System.out.println();
f1.ARR[0] = 100; //요소값 변경
f1.ARR[1] = 200;
for(int a : f1.ARR)
System.out.print(a+",");
}
}
- Final 메서드
final 제한자 : 변경불가
final 메서드 : 재정의 불가 메서드. 오버라이딩 불가 메서드
final, abstract 예약어는 함께 사용 불가
📌
package chap7;
public class FinalMethod {
public final void method() { //final 메서드. 오버라이딩 불가.
System.out.println("FinalMethod 클래스의 method()");
}
}
class subMethod extends FinalMethod {
/*
* public void method() { System.out.println("SubMethod 클래스의 method()"); }
*/
}
- Final 클래스
final 제한자 : 변경불가의 의미
final 클래스 : 변경하지 마.라는 뜻
상속 불가 클래스.
다른 클래스의 부모클래스가 될 수 없다.
String 클래스가 final 클래스임
📌
package chap7;
public class FinalClass {}
class subClass extends FinalClass {}
'수업(국비지원) > Java' 카테고리의 다른 글
| [Java] chap8 : 인터페이스 - Interface(복합예제) (0) | 2023.04.15 |
|---|---|
| [Java] chap8 : 인터페이스 - Interface, 리턴타입이 인터페이스인 경우, 인터페이스의 객체화 (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - 다형성 Exam1 (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - 상속2 (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - 다형성(polymorphism)예제 (0) | 2023.04.15 |