▶ static 멤버란?
객체마다 생기는 것이 아닌 클래스당 하나만 생성할 수 있으며, 클래스 멤버라고도 부른다.
객체를 생성하지 않고 사용 가능하다.
▶ static 멤버의 특성
공유적 특성 - static 멤버들은 클래스 당 하나만 생성
시간적 특성 - static 멤버들은 클래스가 로딩될 때 공간 할당
공유의 특성 - static 멤버들은 동일한 클래스의 모든 객체에 의해 공유
▶ 기본이 되는 non-static 멤버의 특성
공간적 특성 : 멤버들은 객체마다 독립적으로 별도 존재, 인스턴스 멤버라고도 부름
시간적 특성 : 필드와 메소드는 객체 생성 후 비로소 사용 가능
비공유 특성 : 멤버들은 다른 객체에 의해 공유되지 않고 배타적
static 멤버 예제
public class Calc {
//클래스 내 메소드가 모두 static 멤버이므로 객체 생성 없이도 바로 사용 가능하다.
//abs메소드는 삼항연산자를 활용해 a>0 ? a : -a
//a가 0보다 크면 +, 0보다 작으면 -a로 만들어 절대값을 구한다.
public static int abs(int a) {
return a > 0 ? a:-a;
}
//max나 min 메소드도 삼항 연산자를 활용한다.
//큰 수 구하기
public static int max(int a, int b) {
return (a > b) ? a : b;
}
//작은 수 구하기
public static int min(int a, int b) {
return (a > b) ? b : a;
}
}
public class Ex08 {
public static void main(String[] args) {
// static 메소드 이므로 객체 생성 없이 calc 클래스명을 그대로 사용할 수 있다.
System.out.println(Calc.abs(-5));
System.out.println(Calc.max(10, 8));
System.out.println(Calc.min(-3, -8));
}
}
언제 어디서든 호출할 수 있는 전역함수 static, 즉 정적멤버는 객체 생성없이 사용이 가능하며
정적메소드는 정적필드만 사용가능 하고 정적메소드만 호출가능하다.
그리고 this 키워드 사용과 오버라이딩이 불가능 하다.
여러 인스턴스들이 동일한 메소드, 필드가 필요할 때 쉽게 호출하여 바로 접근할 수 있도록한다.
'JAVA' 카테고리의 다른 글
JAVA 업캐스팅과 다운캐스팅 (+동적바인딩, 정적바인딩) (0) | 2022.03.16 |
---|---|
java 객체 지향의 상속이란? 특징/사용법/예제 (0) | 2022.03.15 |
JAVA 클래스 선언과 생성자, 객체 생성(+getter/setter) (0) | 2022.03.07 |
JAVA 객체 지향 프로그래밍이란? (+특징) (0) | 2022.03.05 |
JAVA 공백제거 방법 3가지 trim, replaceAll, charAt (0) | 2022.03.04 |
댓글