본문 바로가기
study/Java

[Java] 19. 클래스와 인스턴스의 호출

by 금이패런츠 2022. 3. 18.
728x90
반응형
package chap6;
/*
 * 클래스
 *  속성 - 멤버변수 - 클래스 변수 : static
 *              - 인스턴스 변수
 *  
 *  기능 - 멤버메서드 - 클래스 메서드 : static
 *               - 인스턴스 메서드
 *  사용 준비 완료 : 변수 : 저장공강 할당
 *             메서드 : 호출가능 상태             
 *             
 *  클래스멤버(static) : 클래스 정보 로드시 사용 준비 완료.
 *                    클래스명.멤버명
 *  인스턴스멤버       : 객체화시 사용 준비 완료.     
 *                   참조변수명.멤버명
 *                   
 *  클래스멤버에서 인스턴스멤버 호출시 직접호출 불가능. 객체화가 필요함.                 
 */
public class MemberCallEx1 {
	static int cv1 = 10;  //클래스변수
	static int cv2 = cv1; //클래스변수간 호출 (정상)
	int iv1 = 100;        //인스턴스변수
	int iv2 = iv1;        //인스턴스변수간 호출 (정상)
	int iv3 = cv1;        //인스턴스변수에 클래스변수값을 저장 (정상) 
//	static int cv3 = iv1; //클래스변수에서 인스턴스변수 호출시 오류 발생
	static int cv3 = new MemberCallEx1().iv1; //클래스변수에서 인스턴스변수 호출시 객체화 필요
	
	void method1() {      //인스턴스메서드
		System.out.println("cv1+cv2=" + (cv1+cv2)); //클래스변수 호출 (정상)
		System.out.println("iv1+iv2=" + (iv1+iv2)); //인스턴스변수 호출 (정상)
	}
	static void method2() { //클래스메서드
		System.out.println("cv1+cv2=" + (cv1+cv2)); //클래스변수 호출 (정상)
//		System.out.println("iv1+iv2=" + (iv1+iv2)); //인스턴스변수 호출시 오류 발생
		MemberCallEx1 m = new MemberCallEx1(); //인스턴스변수 호출시 객체화 필요
		System.out.println("iv1+iv2=" + (m.iv1+m.iv2));
	}
	public static void main(String[] args) { //클래스 메서드
		//main메서드에서 method1(), method2() 메서드 호출하기
//		new MemberCallEx1().method1(); //방법1
		MemberCallEx1 m = new MemberCallEx1(); //방법2
		m.method1();
		method2();
	}
}
728x90
반응형