Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- super 생성자
- 부모 생성자
- do~while문
- 취준생
- 캐스팅연산자
- 상속
- 생성자
- Java
- 예외처리
- 가위바위보프로그램
- 개발
- 예외던지기
- for문
- 자바
- 사용자 정의 예외처리
- 추상화
- AoutoBoxing
- 클래스의구조
- exception
- 코딩
- 독학
- Date Class
- userDefineException
- 프로그래머스
- Calendar Class
- 국비지원
- 알고리즘
- 개발자
- 비전공자
- 백앤드
Archives
- Today
- Total
유난스런 개발 기록
[JAVA] Day-16 _ final 키워드 본문
day-16
final 키워드
final 키워드란 ?
- final 키워드는 메소드 , 변수, 클래스 에 사용이 가능하다.
- final은 말 그대로 종결자다. 때문에 final 을 붙여주면 특정한 제한이 걸린다.
== final 메소드는 overriding (오버라이딩, 메소드의 재정의) 이 불가능하다. ==
== final 클래스는 다른 클래스에게 상속을 해줄 수 없다. 즉, 부모 클래스로 사용될 수 없다. ==
== final 을 필드에 붙이면 새로운 값을 할당할 수 없다. =
코드를 확인해보면 쉽게 이해할 수 있다.
실습으로 생성했던 여러개의 클래스를 첨부한다.
어디에 final 이 사용되었고, 어떻게 적용되고 있는지 확인해보면 된다.
final_test_1
package my.day16.d.Final;
public class Final_test_1 {
String id;
String name;
// 필드에 final 이 붙으면 더 이상 새로운 값으로 할당할 수 없다.
final double PI = 3.141592; // 상수변수
void greeting() {
System.out.println("=== 안녕하세요 ===");
}
// 메소드에 final 을 붙이면 자식 클래스에서 메소드의 overriding(오버라이딩, 재정의)을 할 수 없게 된다.
final void rule() {
System.out.println("=== 정직하게 삽시다 ===");
}
}
final_test_2
package my.day16.d.Final;
// final 로 되어진 클래스는 다른 클래스로 상속해줄 수 없다는 말이다.
// 즉, final 로 되어진 클래스는 다른 클래스에서 부모 클래스로 사용될 수 없다는 말이다.
public final class Final_test_2 {
String id;
String name;
public void example() {
System.out.println("=== 연습입니다. ===");
}
}
main_final_test_1
package my.day16.d.Final;
public class Main_final_test_1 {
public static void main(String[] args) {
Final_test_1 ft1 = new Final_test_1();
ft1.id = "leess";
ft1.name = "이순신";
// ft1.PI = 23.324324; // final 이므로 새로운 값을 할당할 수 없기에 오류임.
//////////////////////////////////////////////
Child_1 child = new Child_1();
child.greeting(); // 메소드의 overriding(오버라이딩, 재정의)
child.rule();
child.mytest();
}// end of main()-------------------------
}
child_1
package my.day16.d.Final;
public class Child_1 extends Final_test_1 {
int age;
void mytest() {
System.out.println(">> 연습입니다. <<");
}
@Override
public void greeting() {
System.out.println("\n~~~ Hi Hello ~~~\n");
}
/*
=== final 메소드는 overriding(오버라이딩, 재정의)을 할 수 없다. ===
@Override
public void rule() {
System.out.println("\n~~~ Honesty ~~~\n");
}
*/
}
child_2
package my.day16.d.Final;
public class Child_2 extends Final_test_2 {
// Final_test_2 클래스가 final 클래스 이므로 상속받을 수 없다.
// 상속을 받을 수 없는데 extends 를 사용했으므로 오류이다.
}
final 키워드가 붙으면 메소드, 클래스, 필드 등의 생성에 제한이 생길 수 있다는 것을 꼭 기억하자.
'개념정리 > JAVA' 카테고리의 다른 글
[JAVA] Day-17 _ 예외처리 (Exception) (0) | 2023.02.06 |
---|---|
[JAVA] Day-16 _ 인터페이스 (interface) (0) | 2023.02.06 |
[JAVA] Day-16 _ 접근 제어자 (access modifier) (0) | 2023.02.06 |
[JAVA] Day-16 _ 초기화 블럭 (initialization block) (0) | 2023.02.01 |
[JAVA] Day-16 _ super() 생성자 (super constructor) (0) | 2023.02.01 |