| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- ncbi
- Kaggle
- Java
- 시그모이드
- BLaST
- HMM
- 결정트리
- CNN
- 바이오인포매틱스
- 캐글
- 바이오파이썬
- 생명정보학
- 자바
- 서열정렬
- 파이썬
- RNN
- 인공지능
- SVM
- 인공지능 수학
- 이항분포
- 인공신경망
- 오류역전파
- 딥러닝
- MERS
- COVID
- bioinformatics
- 블록체인
- AP
- AP Computer Science A
- 생물정보학
- Today
- Total
데이터 과학
static 메소드 본문
Java에서 static 메소드는 클래스 레벨에서 정의되는 메소드입니다. 즉, 해당 클래스의 인스턴스에 의존하지 않고 호출이 가능합니다. static 메소드는 클래스의 정적 멤버(static member)로 간주되며, 인스턴스 생성 없이도 호출이 가능합니다.
static 메소드를 사용하는 가장 큰 이유는 유틸리티 메소드를 작성할 때입니다.
예를 들어, Math 클래스에 있는 abs(), sqrt()와 같은 메소드는 모두 static 메소드입니다. 이러한 메소드는 인스턴스를 생성하지 않고도 호출이 가능하므로, 간단한 계산에 유용합니다.
static 메소드는 인스턴스 변수에 접근할 수 없습니다. 그 이유는 static 메소드는 인스턴스 생성 없이도 호출이 가능하기 때문입니다. 따라서, static 메소드에서는 인스턴스 변수 대신에 클래스 변수(static 변수)만 사용할 수 있습니다.
또한, static 메소드는 오버라이딩(overriding)이 불가능합니다. 자바에서는 메소드 오버라이딩을 사용하면 상속받은 클래스에서 부모 클래스의 메소드를 재정의할 수 있습니다.
하지만 static 메소드는 클래스 레벨에서 정의되므로 오버라이딩이 불가능합니다.
마지막으로, static 메소드는 인스턴스 메소드보다 빠르게 호출이 가능합니다. 인스턴스 메소드는 인스턴스를 생성하고 메모리를 할당하는 과정이 필요하지만, static 메소드는 클래스 레벨에서 정의되므로 이러한 과정이 필요하지 않기 때문입니다. 따라서, static 메소드는 더 빠른 성능을 제공할 수 있습니다.
public class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double area() {
return Math.PI * radius * radius;
}
public static double circumference(double radius) {
return 2 * Math.PI * radius;
}
}
위 예제에서 Circle 클래스는 원(circle)을 나타내는 클래스입니다. 인스턴스 변수인 radius는 원의 반지름을 나타내며, area() 메소드는 원의 넓이를 계산하여 반환합니다.
반면에, circumference() 메소드는 static 메소드입니다. 이 메소드는 반지름을 입력으로 받아 원의 둘레를 계산하여 반환합니다. 인스턴스를 생성하지 않고도 클래스 레벨에서 호출할 수 있으므로, 다음과 같이 사용할 수 있습니다.
double radius = 5.0;
double circleCircumference = Circle.circumference(radius);
위 예제에서 circleCircumference 변수는 원의 반지름이 5일 때의 둘레를 저장합니다. 이때, Circle 클래스의 인스턴스를 생성하지 않고도 circumference() 메소드를 호출할 수 있습니다.
'프로그래밍 언어론 > JAVA 기초' 카테고리의 다른 글
| public, private, 그리고 static (0) | 2023.03.27 |
|---|---|
| 부동소수점 연산 - BigDecimal (0) | 2023.03.20 |
| 인터페이스 (interface) (0) | 2022.11.13 |
| 추상 클래스와 오버라이딩 (4) | 2022.11.13 |
| 상속(Inheritance) (10) | 2022.11.06 |