클래스멤버와 인스턴스멤버 간의 참조와 호출
package ch06;
public class MemberCallEx1 {
static int cv1 = 10;
static int cv2 = cv1; // 클래스멤버간 호출
int iv1 = 100;
int iv2 = iv1; // 인스턴스멤버간 호출
int iv3 = cv1; // 클래스멤버 호출 (in 인스턴스멤버)
// static int cv3 = iv1; // 인스턴스멤버 호출 (in 클래스멤버) --> 불가(인스턴스를 생성해야됨)
static int cv3 = new MemberCallEx1().iv1;
public static void main(String[] args) {
// cv2 = iv1; // main메소드(클래스멤버)에서 인스턴스멤버 접근 불가
cv2 = new MemberCallEx1().iv1;
// iv1 = cv2; // main메소드(클래스멤버)에서 인스턴스멤버 접근 불가
new MemberCallEx1().iv1 = cv2;
// method1(); // main메소드(클래스멤버)에서 인스턴스멤버(메소드) 사용 불가
new MemberCallEx1().method1();
method2();
}
void method1() {
System.out.println(cv1 + cv2);
System.out.println(iv1 + iv2);
}
static void method2() {
System.out.println(cv1 + cv2);
// System.out.println(iv1 + iv2); // 클래스메소드에서 인스턴스멤버 사용 불가
MemberCallEx1 m = new MemberCallEx1();
System.out.println(m.iv1 + m.iv2);
}
}
>
110
200
110
200
▲수학의 대입법처럼 객체를 형성해서 변수에 넣을수 있음.(12번째줄)
MemberCallEx1 m = new MemberCallEx1();
static int cv3 = m.iv1;
↓
static int cv3 = new MemberCallEx1().iv1;