728x90
1. final
final은 저번에도 한번 상수의 타입이라고 글을 작성한 적 있다. 상수라는 것은 값이 변경이 되지 않는 값을 이야기한다.
1-1. 사용
클래스를 하나 만들어 준다.
public class ActionCam extends Camera {
public final String lens; // = "광각렌즈"; 1. 선언과 할당 동시에 할 수도 있고 // 값을 못바꾸게 해놨음
public ActionCam() {
super("액션 카메라");
lens = "광각렌즈"; // 2. 나중에 선언할 수도 있음
}
public final void makeVideo(){
System.out.println(this.name + " : " + this.lens + "로 촬영한 영상을 통해 멋진 비디오를 제작합니다.");
}
}
코드를 보면 클래스 변수를 선언할 때 final을 붙인 것을 알고 있다. 이렇게 상수로 만들면 값을 변경 할 수없다.
변수를 선언할 때 같이 값을 넣을 수도 있고. 메소드안에 넣은 것 처럼 나중에 값을 설정 할 수도 있다. 이외에 상속 자체를 못하게 하고 싶으면 부모 클래스를 아예 final로 선언해버리면 된다.
2. 열거형(Enum)
2-1. 정의
열거형은 상수들의 묶음이다.
2-1. 종류
- 달력 (월)
- 옷 사이즈
- OS 종류
- 해상도
- ...
2-2. 사용법
2-2-1. 열거형 선언방법
enum Resolution {
HD, FHD, UHD;
}
클래스를 선언할때 앞에 enum을 붙이면 된다.
2-2-2. 사용예제들
예제 1
Resolution resolution = Resolution.HD; // 열거형을 만들어주는 방법
System.out.println(resolution);
resolution = Resolution.FHD;
// ⭐️ 사용예제1 (switch case)
switch (resolution) {
case HD:
System.out.println("일반화질");
break;
case FHD:
System.out.println("고화질");
break;
case UHD:
System.out.println("초고화질");
break;
}
switch case문으로 사용 가능하다.
예제 2
valueOf를 사용해서 UHD라는 문자열을 열거형으로 바꿔주고 그 값을 출력함
resolution = Resolution.valueOf("UHD");
System.out.println(resolution);
예제 3
열거형에 어떤 요소가 있는지 모를 때
for (Resolution myRes : Resolution.values()){
System.out.println(myRes.name() + " : " + myRes.ordinal()); // 각각 이름과 순서를 뽑는 것들.
}
System.out.println("--------------------------------");
// 값 가져오기
for (Resolution myRes : Resolution.values()){
System.out.println(myRes.name() + " : " + myRes.getWidth());
}
foreach를 사용해서 열거형 클래스의 요소들을 쫙 꺼내올 수 있다.
예제 4
이게 좀 중요한데 상수는 건들면 안되는 값이기 때문에 값을 미리 정해주는것이 좋다.
enum Resolution {
HD(1280), FHD(1920), UHD(3840);
// 열거형들이 각각의 값을 가지게 하고 싶을 때
private final int width; // 변수
Resolution(int width){ // 값 넣어주기
this.width = width;
}
public int getWidth(){ // private로 설정했으니 getWidth로 값 넘겨주기
return width;
}
}
반응형
'Java 개념' 카테고리의 다른 글
예외처리 (0) | 2023.08.01 |
---|---|
인터페이스 (0) | 2023.07.31 |
참조 (0) | 2023.07.03 |
다형성과 super (0) | 2023.07.02 |
상속과 메소드 오버라이딩 (0) | 2023.07.02 |