JAVA - 4
카테고리: java
상수 - Final
final
은 Java에서 변수, 메서드 또는 클래스에 사용되는 한정자입니다. final
키워드를 사용하면 해당 요소에 대한 변경을 허용하지 않는다는 의미를 갖습니다.
**final
변수:**final
로 선언된 변수는 한 번 초기화되면 그 값을 변경할 수 없습니다. 즉, 상수로 사용되며, 다른 값으로 재할당할 수 없습니다. 예를 들어,final int aim = 1000;
과 같이 선언된 변수는 1000으로 초기화되고 이후에는 변경할 수 없습니다.final
메서드:final
로 선언된 메서드는 하위 클래스에서 오버라이딩(재정의)할 수 없습니다. 즉, 해당 메서드의 구현은 최종적이며, 하위 클래스에서 변경할 수 없습니다. 다른 클래스에서 해당 메서드를 호출하면 항상 최상위 클래스에 정의된 메서드가 실행됩니다.final
클래스:final
로 선언된 클래스는 상속될 수 없습니다. 즉, 다른 클래스에서 이 클래스를 상속받을 수 없습니다.final
클래스는 확장성을 제한하고, 클래스의 안정성과 보안을 강화하는 데 사용될 수 있습니다.
final
한정자는 변수, 메서드 또는 클래스에 사용될 수 있으며, 해당 요소의 변경을 제한하는 역할을 합니다.
final 사용 예시
Scanner
클래스를 사용하여 사용자의 입력을 받습니다.- 사용자로부터 목표 금액(
aim
)을 입력받습니다. 이 값은final
로 선언되어 있어서 나중에 변경되지 않는 값으로 고정됩니다. - 다음으로, 실적(
result
)을 입력받습니다. - 만약 실적이 목표 금액 이상이라면, 목표 금액을 달성했다는 메시지를 출력하고 보너스를 계산합니다. 보너스는 (실적 - 목표 금액)을 10으로 나눈 값으로 계산됩니다. 그리고 보너스를 출력합니다.
- 실적이 목표 금액보다 작다면, 목표 금액 달성에 실패했다는 메시지를 출력합니다.
- 마지막으로,
Scanner
객체를 닫아줍니다.
클래스 내부 메서드 활용
클래스 외부 메서드 활용
영화관 좌석 예약하기
자바로 작성된 간단한 극장 예약 시스템을 구현한 프로그램입니다. 사용자는 원하는 좌석 번호를 입력하여 예약할 수 있습니다.
- 프로그램은 크기가 10인 배열
seats
를 생성하고, 각 좌석의 예약 여부를 나타내는 값(0 또는 1)을 저장합니다. 초기에는 모든 좌석이 비어있으므로 배열의 모든 요소는 0으로 초기화됩니다. - 그 후, 무한 루프(
while (true)
)가 시작됩니다. 루프 내에서는 현재 좌석 상태를 출력하고 사용자에게 좌석 번호를 입력받습니다. 사용자가 입력한 값이 10 이상인 경우 잘못된 값임을 알리고 반복문을 다시 시작합니다. - 사용자가 -1을 입력하면 프로그램은 예약된 좌석을 출력한 후 종료됩니다. 이 때,
seats
배열을 순회하며 값이 1인 인덱스를 출력하여 예약된 좌석을 표시합니다. - 사용자가 유효한 좌석 번호를 입력한 경우, 해당 좌석이 이미 예약되었는지 확인합니다.
seats
배열에서 해당 좌석 번호의 요소값을 확인하여 0인 경우에는 예약되지 않은 좌석으로 간주하고, 값을 1로 변경하여 예약 상태로 표시합니다. 그렇지 않은 경우(값이 1인 경우)에는 이미 예약된 좌석임을 사용자에게 알려줍니다. - 프로그램은 이후 다시 루프의 처음으로 돌아가고, 사용자는 추가적인 예약을 진행할 수 있습니다. 이 과정은 사용자가 종료 조건(-1 입력)을 선택할 때까지 반복됩니다.
this 사용
F
클래스와 This
클래스를 포함한 예제입니다. 이 예제에서는 this
키워드의 사용 방법을 설명하고 있습니다.
먼저, F
클래스는 두 개의 인스턴스 변수 m
과 n
을 가지고 있습니다. F
클래스에는 init
메서드와 work
메서드가 정의되어 있습니다.
init
메서드는 두 개의 매개변수 a
와 b
를 받아와서, 로컬 변수 c
에 3을 저장한 후 this.m
과 this.n
을 사용하여 인스턴스 변수 m
과 n
에 값을 할당합니다. this
키워드는 현재 인스턴스를 가리키는 레퍼런스이므로, this.m
은 F
클래스의 인스턴스의 m
을 의미하고, this.n
은 F
클래스의 인스턴스의 n
을 의미합니다.
work
메서드는 this.init(2, 3)
을 호출하여 init
메서드를 실행합니다. 이 때, this
키워드는 현재 인스턴스를 가리키므로, this.init()
은 F
클래스의 init
메서드를 호출하는 것을 의미합니다.
This
클래스의 main
메서드에서는 F
클래스의 객체 f
를 생성한 후, f.work()
를 호출하여 work
메서드를 실행합니다. 이로써 init(2, 3)
이 실행되어 m
에는 2가 저장되고 n
에는 3이 저장됩니다.
마지막으로, System.out.println(f.m)
과 System.out.println(f.n)
을 통해 f
객체의 m
과 n
값을 출력합니다. 결과적으로 2
와 3
이 출력되는 것을 확인할 수 있습니다.
댓글 남기기