핵심 정리 - 카운터와 유틸리티
Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 19번째.
챌린지
쉬움인스턴스 추적을 위한 Counter 클래스와 MathUtils 유틸리티 클래스를 결합한 완전한 시스템을 구축해 봅시다. 이를 통해 정적 변수, 정적 메서드, 정적 블록 및 상수에 대해 배운 모든 내용을 종합해 볼 수 있습니다.
코드를 구성하기 위해 세 개의 파일을 생성합니다:
Counter.java: 생성된 인스턴스의 개수를 추적하는 클래스를 생성합니다:- 총 인스턴스 수를 계산하기 위한 private static 변수
- 각 카운터의 고유 식별자를 저장하는 private 인스턴스 변수
id - 총 개수를 증가시키고 현재 개수를 이 인스턴스의 id로 할당하는 생성자
- 이 카운터의 고유 id를 반환하는
getId()메서드 - 생성된 Counter 객체의 수를 반환하는 static 메서드
getTotalCount()
MathUtils.java: 정적 멤버만 포함하는 유틸리티 클래스를 생성합니다 (인스턴스화되지 않음):- 값이
3.14159인 public 상수PI - 값이
0.5인 public 상수HALF - n의 제곱을 반환하는 static 메서드
square(int n) - n의 세제곱을 반환하는 static 메서드
cube(int n) - PI * radius * radius를 반환하는 static 메서드
circleArea(double radius)
- 값이
Main.java: 두 클래스가 함께 작동하는 것을 보여줍니다. 수학 연산을 위한 숫자와 생성할 Counter 객체의 개수라는 두 가지 입력을 받습니다. 다음을 출력하세요:Square: [value]Cube: [value]Circle area (radius=[number]): [value](면적은 소수점 둘째 자리까지 형식화)- 생성된 각 Counter에 대해 다음을 출력:
Counter [id] created - 마지막으로:
Total counters: [count]
수학 계산을 위한 숫자(int)와 생성할 Counter 객체의 개수(int)라는 두 가지 입력을 받게 됩니다.
정적 멤버는 클래스 이름(예: MathUtils.PI 및 Counter.getTotalCount())을 통해 액세스해야 하며, 소수점 값을 형식화할 때는 String.format("%.2f", value)를 사용해야 함을 기억하세요.
직접 해보기
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: MathUtils static 메서드를 사용하여 계산하고 출력하세요:
// - Square: [value]
// - Cube: [value]
// - Circle area (radius=[number]): [value] (소수점 둘째 자리까지 형식화)
// TODO: 'count' 개수만큼 Counter 객체를 생성하세요
// 생성된 각 Counter에 대해 다음을 출력하세요: Counter [id] created
// TODO: 생성된 카운터의 총 개수를 출력하세요
// Total counters: [count]
}
}
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조