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
- d3js
- EUREKA
- sveltekit
- NextJS
- JUnit
- Vue3
- style
- springboot
- Python
- Java
- Logging
- svelte
- Vue
- nodejs
- fastapi
- 오라클
- Spring
- npm
- react
- vitejs
- post
- loguru
- Shell
- ubuntu
- gradle
- InteliJ
- Test
- vuex
- fetch
- NextJS13
Archives
- Today
- Total
양군의 행복한 이야기
final 의미 본문
1. 필드
final String msg = "abce";
or
final String msg = "";
public Sample(String _msg){
msg = _msg;
}
초기값이 변경되지 않는다.
초기 값을 줄수 있는 방법은 필드 선언시 주는 방법과 생성자를 통해서 주입한다.
보통 생성자 선언시 필수로 받기 위하여 사용한다.
2. 객체
class SampleClass{
String name = "가나다";
public void setName(String _name){
name = _name;
}
public String getName(){
return name;
}
}
public class FinalSample{
public static void main(String[] args){
final SampleClass sclass = new SampleClass();
sclass.setName("ABCE"); // 가능하다.
sclass = = new SampleClass(); // 불가능 하다.
}
}
객체를 선언시에 사용하면 다시 선언이 불가능 하다.
그러나 객체 내부의 변수는 변경이 가능하다.
3. 클래스
final class Sample{
String name = "ABCD";
}
// 상속 불가능
class SubSample extends Sample{
}
클래스에 final을 사용하면 상속이 불가능 하다. 최종 클래스가 된다.
필드의 값들은 setter를 사용하면 변경이 가능하다.
4. 메서드
class Sample{
String name = "ABCD";
public final void setting(){
name = "1234";
}
}
class SubSample extends Sample{
// 오버라이드 불가능
public void setting()
{
name = "!@#$";
}
}
메서드에 final 을 사용하면 오버라이드가 불가능 하다.
자식 클래스에서 부모의 클래스의 메서드를 변경 불가능 하도록 사용한다.
4. 메서드 인자값
public void setName(final String _name){
// 불가능 하다.
_name = "ABCD" ;
}
간혹 인자 값에 final을 넣는경우가 있는데 잘 사용하진 않는다.
이경우 인자값으로 넘온값을 변경 하지 못한다.
인자값을 변경하는 코딩은 좋지 않은 방식이다.