생성자는 new 키워드를 통해 객체가 생성될 때, 해당 객체를 초기화하기 위해 호출되는 특별한 종류의 메서드입니다.
주요 규칙:
this 키워드:
this.멤버변수: 생성자의 매개변수 이름과 멤버 변수의 이름이 같을 때, 둘을 구분하기 위해 현재 객체 자신을 가리키는 this를 사용합니다.this(): 같은 클래스 내의 다른 생성자를 호출할 때 사용합니다. 반드시 생성자의 첫 줄에서만 호출할 수 있습니다.public class Member {
private String name;
private int age;
// 기본 생성자
public Member() {
this("Guest", 0); // 아래의 다른 생성자를 호출
}
// 매개변수가 있는 생성자
public Member(String name, int age) {
this.name = name; // this.name은 멤버 변수, name은 매개변수
this.age = age;
}
}
오버로딩이란 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것입니다.
성립 조건: 메서드 이름은 같지만, 매개변수의 개수나 타입이 달라야 합니다. (반환 타입은 오버로딩 조건과 무관합니다.)
장점: 동일한 기능을 수행하지만, 다양한 종류의 매개변수를 처리해야 할 때, 메서드 이름을 하나로 통일하여 코드의 가독성과 일관성을 높일 수 있습니다.
public class Calculator {
int add(int a, int b) {
return a + b;
}
// 매개변수의 개수가 다름 -> 오버로딩 O
int add(int a, int b, int c) {
return a + b + c;
}
// 매개변수의 타입이 다름 -> 오버로딩 O
double add(double a, double b) {
return a + b;
}
}
오버라이딩 vs 오버로딩:
static (정적) 멤버static 키워드가 붙은 멤버(변수, 메서드)는 클래스에 소속되며, 객체(인스턴스)를 생성하지 않고도 클래스명.멤버명 형태로 직접 접근할 수 있습니다.
특징:
static 메서드 내에서는 static 멤버에만 접근할 수 있습니다. (객체가 생성되기 전에도 호출될 수 있으므로, 인스턴스 멤버에는 접근 불가)사용 사례: 모든 객체가 공통으로 사용하는 값(e.g., Math.PI), 유틸리티성 메서드(e.g., Math.random()) 등에 사용됩니다.
class Counter {
static int count = 0; // 정적 변수
Counter() {
count++; // 객체가 생성될 때마다 모든 객체가 공유하는 count가 증가
}
}
final 키워드final은 "최종적인"이라는 의미로, 어디에 붙느냐에 따라 다른 역할을 합니다.| 대상 | 설명 |
|---|---|
final 변수 | 상수(Constant)가 되어, 최초 한 번만 초기화할 수 있고 이후에는 값을 변경할 수 없습니다. |
final 메서드 | 오버라이딩(재정의)을 금지합니다. |
final 클래스 | 상속을 금지합니다. (e.g., String, Integer 클래스) |
try-catch-finally 구문try: 예외가 발생할 가능성이 있는 코드를 감쌉니다.
catch: try 블록에서 특정 종류의 예외가 발생했을 때, 이를 잡아(catch) 처리하는 코드를 작성합니다.
finally: 예외 발생 여부와 상관없이 항상 실행되어야 하는 코드를 작성합니다. (e.g., 사용했던 리소스(파일, DB 커넥션)를 닫는 코드)
try {
// 예외 발생 가능성이 있는 코드
int result = 10 / 0; // ArithmeticException 발생
} catch (ArithmeticException e) {
// 예외 처리 코드
System.out.println("0으로 나눌 수 없습니다: " + e.getMessage());
} catch (Exception e) {
// 다른 모든 예외를 처리 (보통 가장 마지막에 위치)
System.out.println("알 수 없는 오류 발생");
} finally {
// 항상 실행되는 코드
System.out.println("예외 처리 종료");
}
throws 키워드throws 키워드를 사용하면, 해당 메서드 내에서 발생할 수 있는 예외를 직접 처리하지 않고, 이 메서드를 호출한 쪽으로 예외 처리를 떠넘길(위임할) 수 있습니다.this 키워드를 통해 멤버 변수를 구분하거나 다른 생성자를 호출할 수 있습니다.static 멤버는 클래스에 소속되어 모든 객체가 공유하며, final 키워드는 변수, 메서드, 클래스가 변경되거나 확장되는 것을 방지합니다.try-catch-finally)는 프로그램 실행 중 발생하는 오류에 대비하여, 시스템의 비정상적인 종료를 막고 안정성을 높이는 필수적인 방법입니다.