클래스의 멤버 기본 구성
필드 ( 클래스 변수 )
메소드 ( 클래스 메소드 )
생성자
인스턴스 변수와 인스턴스 메소드
클래스 멤버는 객체가 생성되고 나서 값을 저장하거나 호출할 수 있습니다.
이러한 멤버는 '인스턴스 변수', '인스턴스 메소드' 라고 부릅니다.
즉, 인스턴스 변수와 인스턴스 메소드는 클래스 객체를 생성하고 나서 사용할 수 있다는 의미입니다.
그러나 객체에 연결되지 않은 멤버를 가질 수도 있습니다.
이러한 변수와 메소드는 '클래스 변수', '클래스 메소드' 라고 부를 수 있습니다.
클래스 변수와 클래스 메소드
클래스 변수 : 클래스 전체와 연결된 필드
클래스 메소드 : 클래스 전체와 연결된 메소드
클래스 변수와 메소드를 선언할 때는 static 의 제한자를 붙여야 합니다.
1
2
3
4
5
6
7
8
|
class Car
{
public static int sum = 0;
public static void ShowSum () {
System.out.println(sum);
}
}
|
cs |
static 이 붙은 변수와 메소드의 의미
static 클래식 변수
같은 클래스의 객체들이 다루는 데이터를 저장하는 변수가 클래스 변수 입니다.
클래스 변수는 생성한 각 객체들이 값을 공유하게 됩니다.
static 클래스 메소드
특정 클래스 객체에 종속되어 있지 않기 때문에
클래스 메소드는 객체를 생성하지 않더라도 호출할 수 있습니다.
클래스 메소드는 객체를 생성하지 않더라도 호출할 수 있어야 하기 때문에 호출 방법이 조금 다릅니다.
1
|
Car.ShowSum();
|
cs |
static 클래스 변수와 메소드 사용 시 주의점
static 변수와 메소드에는 this 키워드를 사용할 수 없습니다.
this 는 자기자신 객체의 값을 호출하는 의미인데, static 을 사용하는 순간 모든 객체의 값을 공유한다는 의미이기 때문입니다.
클래스 변수와 메소드 사용 예제
인스턴스 변수 메소드와, 클래스 변수 메소드의 사용방법에 대한 코드입니다.
6, 7 줄은 클래스 메소드를 호출하고 있습니다.
클래스 메소드이기 때문에 객체를 생성하지 않고 바로 사용할 수 있습니다.
9, 13 번째 줄은 클래스 객체를 생성 후 인스턴스 메소드를 호출하는 방식입니다.
11, 15 라인처럼 클래스 객체에서 클래스 메소드를 호출이 가능합니다.
그러나 클래스 함수 내부에서는 값을 공유하는 static 을 사용하였기 때문에, 값이 초기화 되지 않고 계속 증가하게 됩니다.
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
29
30
31
32
|
public class StaticTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Static.all_sumf(); // 객체 생성 없이 호출이 가능
Static.all_sumf(); // 객체 생성 없이 호출이 가능
Static st1 = new Static();
st1.each_sumf();
st1.all_sumf();
Static st2 = new Static();
st2.each_sumf();
st2.all_sumf();
}
}
class Static {
private static int all_sum = 0;
private int each_sum = 0;
public static void all_sumf () {
all_sum = all_sum + 1;
System.out.println("all_sum " + all_sum);
}
public void each_sumf () {
each_sum = each_sum + 1;
System.out.println("each_sum " + each_sum);
}
}
|
cs |
자바 클래스 메소드 사용방법
자바 클래스 변수 사용방법
자바 Static 메소드 사용방법
자바 Static 변수 사용방법
자바 인스턴스 메소드 사용방법
자바 인스턴스 변수 사용방법
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 문자열에서 index 위치에 있는 문자를 반환받는 방법 charAt (0) | 2020.12.03 |
---|---|
[JAVA] 클래스 라이브러리 원리 (0) | 2020.12.02 |
[JAVA] 자바 생성자 사용방법과 생성자 오버로딩 방법 (0) | 2020.11.23 |
[JAVA] 자바 오버로딩의 원리 알아보기 (0) | 2020.11.22 |
[JAVA] 자바 Private 와 Public 멤버의 차이 (1) | 2020.11.10 |