반응형
인스턴스 변수는 인스턴스가 만들어 지면서 생성되는데, 클래스 메소드는 인스턴스가 만들어 지기 전에 생성 되기 때문에 클래스 메소드가 인스턴스 멤버에 접근 하는것은 존재하지 않는 것에 접근하는 것과 똑같다.
package org.opentutorials.javatutorials.classinstancee;
class C1{
static int static_variable = 1;
int instance_variable = 2;
static void static_static(){
System.out.println(static_variable);
}
static void static_instance(){
// 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다.
//System.out.println(instance_variable);
}
void instance_static(){
// 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
System.out.println(static_variable);
}
void instance_instance(){
System.out.println(instance_variable);
}
}
public class ClassMemberDemo {
public static void main(String[] args) {
C1 c = new C1();
//클래스 메소드에서 클래스 변수에 접근
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 인스턴스 메소드가 정적 변수에 접근 -> 성공
//c.static_static();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 정적 메소드가 인스턴스 변수에 접근 -> 실패
//c.static_instance();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 클래스 변수에 접근 -> 성공
//c.instance_static();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공
//c.instance_instance();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 클래스 변수에 접근 -> 성공
//C1.static_static();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 인스턴스 변수에 접근 -> 실패
//C1.static_instance();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
//C1.instance_static();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
//C1.instance_instance();
}
}
인스턴스 변수 : Non static field
클 래 스 변수 : static filed
field 라는 것은 클래스 전역에 접근 할 수 있다는 의미
반응형
'Java' 카테고리의 다른 글
[Java] 생성자 (0) | 2021.03.08 |
---|---|
[Java] this (0) | 2021.03.07 |
[Java] 클래스변수 (0) | 2021.03.07 |
[Java] 인스턴스, class (0) | 2021.03.05 |
[Java] 메소드 (0) | 2021.03.03 |