// 변수 : 클래스 변수,static, 인스턴스 변수
// 메서드 : 클래스 메서드,static 인스턴스 메서드
// 클래스 멤버 : 같은 클래스 멤버끼리는 직접 호출이 가능함
// 인스턴스 멤버는 직접 호출이 불가
// 객체화 후에 인스턴스 멤버를 호출 가능
// 클래스명.멤버명. 으로 사용한다
// 클래스 정보로드시 메모리 할당. 인스턴스 보다 빠르다. 인스턴스는 객체화 시키는 순간에 메모리에 할당 되기 때문.
//
// 인스턴스 멤버 : 클래스멤버, 인스턴스 멤버 모두 호출이 가능
// 인스턴스콜을 위해선 반드시 객체화가 필요하다.
// 참조변수.멤버명. 으로 사용한다
// 객체화시 메모리 할당
//
public class MemberCall{
int iv = 10;
static int cv = 20;
int iv2 = iv;
// 클래스 변수인 cv2가 iv변수를 호출 할 수 없다.
// static int cv2 = iv; //error
static int cv2 = new MemberCall().iv;
static void staticMethod1(){
System.out.println(cv);
// staticMethod1 메서드가 인스턴스멤버인 iv 호출 불가
// System.out.println(iv); // error
System.out.println( new MemberCall().iv );
}
void instanceMethod1(){
System.out.println(cv);
System.out.println(iv);
}
이런 방식이 가독성이 떨어져서 잘 사용하지 않지만 이런 방식이 필요한 순간도 있다.