final 키워드
final을 해석하면 ‘마지막’ 이라는 뜻이지 않은가.
final 키워드는 필드, 메서드, 클래스, 지역변수에 선언이 가능하다.
그렇다면 마지막 필드, 마지막 메서드, 마지막 클래스일까?
약간은 의미가 비슷하다고 할 수도 있겠다.
마지막 필드와 지역변수 → 더 이상 값의 변경은 없다.
마지막 메서드 → 더 이상 재 정의는 없다.
마지막 클래스 → 더 이상의 개념의 확장은 없다.
tips
public static final int ( psfi 등으로 줄여서가능 )
자바의 상수 : 무조건 static final 같이
final 걍 상속을 다 막아버리는거임
'
final 필드
public class Person {
final String nation; //에러
String name;
int age;
}
클래스를 선언할 때 final 필드를 선언하고 그냥 가만히 있는다면 에러가 발생한다.
반드시 초기화를 해서 마지막 값을 지정해 주어야 한다.
public class Person {
final String nation = "대한민국";
String name;
int age;
}
이런 식으로 final 변수는 초기화가 무조건 필요하다.
그래야 해당 값을 불변의 값으로 지정할 수 있다.
직접 초기화 하는 방식 말고도 이런 방식도 있다.
public class Person {
final String nation = "대한민국";
final String name;
int age;
//생성자를 이용해서 초기화.
public Person(String name) {
this.name = name;
}
}
final 필드를 직접 초기화 하는 방식 말고, 객체가 생성될 때 동시 초기화 할 수 있게
생성자에 필드 초기화 로직을 작성할 수도 있다.
그럼 이제 객체가 생성될 때 전달한 값이 절대 바뀌지 않는 불변의 값으로 지정될 것이다.
public class Main {
Person p = new Person("김철수");
p.nation = "미국"; //에러
p.name = "김마이클"; //에러
}
final로 선언된 변수는 절대 바뀔 수 없는 불변의 값으로 인식되기 때문에
할당 행위 자체가 성립되지 않는다.
final method
final이 붙은 메서드는 오버라이딩을 막는다.
final class
클래스 선언 시 final을 사용하면 그 클래스는 상속이 불가능 해 진다.
열거형(Enum)
열거형(Enum)은 일련의 고정된 상수들을 한 곳에 모아 관리할 수 있도록 하는 자료형임
열거형을 사용함으로써 코드의 가독성과 유지보수성이 향상됨
tips
// enum 쓰는 이유 : 문자열은 오타나도 안알려주니까 안전하게 오타안나게
열거형의 기본 구조
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
'Java' 카테고리의 다른 글
[중앙정보처리학원] Java* 다형성 (Polymorphism) (0) | 2024.04.22 |
---|---|
[중앙정보처리학원] Java* 사용 제한자 static (0) | 2024.04.22 |
[중앙정보처리학원] Java* 객체지향 캡슐화(encapsulation) (0) | 2024.04.22 |
[중앙정보처리학원] Java* 객체지향 접근 제한자 (Access Modifier) (0) | 2024.04.22 |
[중앙정보처리학원] Java* 객체지향 상속 (Inheritance) (0) | 2024.04.22 |