class Tv {
int currentChannel; // 인스턴스 변수
static int minChannel; // 인스턴스 변수
static int maxChannel; // 인스턴스 변수
//생성자
Tv() {
minChannel = 1;
maxChannel = 10;
currentChannel = minChannel;
}
void channelUp() {
if (this.currentChannel + 1 >= maxChannel)
return;
this.currentChannel++;
}
}
클래스가 메모리에 올라갈 때 생성됨
객체를 생성하지 않고 언제든 사용가능
접근방법 - 클래스명.클래스변수명
TV.minChannel;
객체가 생성될 때 인스턴스 변수가 생성
접근 방법 - 생성된 객체 변수명.인스턴스변수명
TV tv = new TV();
tv.currentChannel;
{ // 메서드가 호출되면 수행할 코드(구현부) }
메서드가 호출되면 호출 스택에 메모리가 할당, 종료되면 해제
void channelUp() {
if (this.currentChannel + 1 >= maxChannel)
return;
this.currentChannel++;
}
static 메서드
인스턴스 멤버(인스턴스 변수, 인스턴스 메서드) 와 관련없는 작업을 하는 메서드
메서드 내에서 인스턴스 변수 사용 불가
class Test {
int a;
int b;
static void print() {
// 인스턴스 변수 a에 접근 불가
// System.out.println(a);
}
}
변수명 = new 클래스명;
TV t = new Tv();
인스턴스 초기화 메서드
초기값이 필요한 인스턴스 변수의 값을 초기화
오버로딩 가능
이름이 클래스 이름과 같음
생성자를 하나도 선언되어 있지 않았을 때는 기본생성자 자동생성
class Test {
int a;
Test(){}// 기본생성자
Test(int a){
this.a = a;
}// 생성자
}
인스턴스 자신을 가리키는 참조변수
지역 변수와 인스턴스 변수를 구별할 때 사용
class Test {
int a;
Test(int a){
this.a = a;
}
}