728x90
선언 위치에 따른 변수의 종류
클래스 영역 : 변수 선언만 가능 (값을 넣는건 아직 불가능)
인스턴스 변수(instance var)
- 클래스 영역에서 선언, 클래스와 인스턴스가 생성될때 만들어짐.
- 독립적인 저장공간을 갖는다.
- 서로 다른 값을 가질 수 있다.
- 객체 생성을 해야 만들 수 있다
- tip 코드를 짤 때 개별 속성은 인스턴스 변수로 -> c(참조변수).kind(속성) 형식
- 💡 객체 : 쉽게 생각하면 iv(인스턴스)들을 모아 놓은것
예를 들면 클래스가 TV설계도라고 하면, 객체는 그 기능들을 모아 놓은 진짜 TV이다
클래스 변수
- 클래스 영역에서 선언. 인스턴스 변수 앞에 static을 붙이기만 하면 된다
- 모든 인스턴스가 공통된 저장 공간을 공유하게 됨.
- 한 클래스 안의 모든 인스턴스들이 공통적인 값을 유지해야 하면 클래스 변수로 선언 해야함
- 인스턴스 변수와 달리 인스턴스를 계속 생성 하지 않아도 언제든 사용 가능 -> 객체 생성 필요 없고,아무데나 만들 수 있다.
- 하지만 static 메서드는 인스턴스 메서드를 호출하지 못한다!!
- 메서드에 static을 붙이는 경우 : 인스턴스 변수를 사용하지 않아도 될 때!왜 static 메서드는 인스턴스 멤버를 쓸 수 없을까?
-> static 메서드 호출시 객체(인스턴스 변수 묶음)가 없을 수도 있으니까!
but.. 인스턴스 변수나,인스턴스 메서드에서는 static이 붙은 멤버들을 사용하는것은 언제나 가능! - tip 코드를 짤때 공통적인 속성은 클래스 변수(static)로 -> Card.width (클래스이름.변수)
class MyMath {
long a, b; //인스턴스 변수
long add() { //인스턴스 메서드
return a + b; //인스턴스 변수
}
static long add(long a, long b) { //클래스 메서드
return a + b; //지역 변수
}
}
메서드 영역 : 메서드 내부에서 행동
- 지역변수(local variable) : 메서드내에서 생성. 메서드가 종료되면 자동 소멸
'JAVA' 카테고리의 다른 글
Exception! - 체크 예외와 언체크 예외 (0) | 2023.02.05 |
---|---|
자바의 다형성 (짧음 주의) (0) | 2023.02.05 |
생성자와 초기화 (feat .this) (0) | 2023.02.05 |
Java - 메소드(Method) 선언 (0) | 2023.02.05 |
클래스 메서드와 인스턴스 메서드 (0) | 2023.02.05 |