일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 데이터과학
- Ai
- git
- 정처기
- 클래스
- Python
- AI학습
- dictionary
- list
- 데이터분석
- Java
- 코딩테스트
- AIVLE
- 백준
- 파이썬
- numpy
- AI 윤리
- KT
- 코딩
- pandas
- 알고리즘
- github
- 정처기 실기
- 인공지능
- LG Aimers
- 데이터
- KT AIVLE
- 자바
- ai 전문가 과정
- 모각코
Archives
- Today
- Total
무향향수
[Java]final 키워드 본문
[Day3] 클래스 다듬기
Chapter 6-5 final
목차 ✅
- final이란?
- 생성자를 이용하여 final 멤버 변수 초기화
- static final이란?
✅ final이란?
- final은 클래스, 메서드, 멤버변수, 지역변수에 사용될 수 있다.
제어자 | 대상 | 의미 |
final | 클래스 | 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다. |
메서드 | 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. |
|
멤버변수 | 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다. |
|
지역변수 |
- 선언, 초기화되면 수정이 불가능하다.
- static final과는 다르게 선언과 초기화를 동시에 진행하지 않아도 된다.
final class FinalTest { // 조상이 될 수 없는 클래스
final int MAX_SIZE = 10; // 값을 변경할 수 없는 멤버변수 (상수)
final void getMaxSize(){ // 오버라이딩 할 수 없는 메서드 (변경 불가)
final int LV = MAX_SIZE; // 값을 변경할 수 없는 지역변수(상수)
}
}
✅ 생성자를 이용하여 final 멤버 변수 초기화하기
final이 붙은 변수는 상수이므로 일반적으로 선언과 초기화를 동시에 하지만, 인스턴스 변수의 경우 생성자에서 초기화 되도록 할 수 있다.
이 기능을 활용하면 각 인스턴스마다 final이 붙은 멤버변수가 다른 값을 갖도록 하는 것이 가능하다.
class Card{
final int Number; // 생성자를 사용하여 초기화하지 않는 경우 ERROR 발생!!
final String Kind;
static int width = 100;
static int height = 250;
Card(String kind, int num){ // 매개변수를 갖는 생성자를 선언하여 final 멤버변수 초기화
Kind = kind;
Number = num;
}
Card(){
this("HEART", 1); // 마찬가지로 모든 생성자가 final 매개 변수를 초기화하지 않으면 ERROR!
}
}
⚠️ 만약 클래스 내에 final 매개변수와 생성자가 존재하는 경우 단 하나의 생성자라도 final 매개변수를 초기화하지 않으면 에러가 발생하기 때문에 주의해야한다.
✅ static final이란?
- final과 같이 한 번 선언, 초기화되면 수정이 불가능하다.
- final과는 다르게 선언과 동시에 초기화를 해야한다.
public class FinalTest {
public static void main(String[] args) {
final int a;
a = 10; // final은 선언만 하고 나중에 초기화를 해도 된다.
}
static final int x; // static final을 선언과 동시에 초기화하지 않아 오류 발생
}
더보기
⭐내용 요약⭐
- final과 static final 모두 선언, 초기화되면 수정이 불가능하다.
- ⚠️static final은 무조건 선언과 동시에 초기화를 해야한다.⚠️
더보기
❓질문❓
- final과 static final의 경우 주로 어떤 때 사용될까?
'SW아카데미 (23) > JAVA' 카테고리의 다른 글
[Java]오버라이딩 (0) | 2023.07.06 |
---|---|
[Java]상속 (0) | 2023.07.06 |
[Java]인스턴스 멤버와 정적 멤버 (0) | 2023.07.05 |
[Java] switch문 (0) | 2023.07.05 |
[Java]기본 타입 변환 (0) | 2023.07.05 |