본문 바로가기
수업(국비지원)/Java

[Java] chap6: 클래스와 객체 - 클래스와 인스턴스의 호출, 매개변수의 자료형

by byeolsub 2023. 4. 15.
  • 클래스와 인스턴스의 호출
클래스
 속성 - 멤버 변수 - 클래스 변수 : staitc
                 - 인스턴스 변수
 기능 - 멤버 메서드 - 클래스 메서드 : static
                   - 인스턴스 메서드 
사용준비 완료 : 변수 : 저장공간 할당
               메서드 : 호출 가능 상태

클래스 멤버(static) : 클래스 정보 로드시 사용 준비 완료.
                     클래스명.멤버명
인스턴스 멤버        : 객체화시 사용준비 완료.
                       참조변수명.멤버명

클래스 멤버에서 인스턴스 멤버 호출 시 직접 호출 불가능. 객체화가 필요함.

 

📌

package chap6;

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); // 클래스 멤버 호출 100
		System.out.println(iv1 + iv2); // 인스턴스 멤버 호출 10
	}

	static void method2() { // 클래스 멤버
		System.out.println(cv1 + cv2); // 클래스 멤버 호출 110
//		System.out.println(iv1+iv2); //오류 : 인스턴스 멤버 호출시 객체화가 되어야 호출 가능
		MemberCallEx1 m = new MemberCallEx1();
		System.out.println(m.iv1 + m.iv2); // 200
	}

	public static void main(String[] args) { // 클래스 멤버
//		cv2 = iv1; //클래스 멤버에서 인스턴스 멤버 호출시 객체화 필요
		cv2 = new MemberCallEx1().iv1;
		System.out.println(cv2); // 110
//		iv3 = cv2; //메인메서드인 클래스 메서드애서 iv3 변수 접근 불가.
		new MemberCallEx1().iv3 = cv2;
		System.out.println(new MemberCallEx1().iv3); // 200
//		method1(); //main 클래스 멤버에서 인스턴스 멤버 호출. 
		// main 클래스 멤버에서 인스턴스 멤버 호출시 객체화 필요
		new MemberCallEx1().method1();
		method2();
	}
}

 


  • 매개변수의 자료형

📌

package chap6;
/*
 * 매개변수의 자료형
 *    기본형 매개변수
 *    참조형 매개변수
 */
class Value{
	int val;
}
public class ParameterEx1 {
	public static void main(String[] args) {
		Value v = new Value();
		v.val = 100;
		change1(v.val); //값만 전달.
		System.out.println("change1() 이후:"+v.val);
		change2(v); //참조값 전달.
		System.out.println("change2() 이후:"+v.val);
	}
	static void change1(int val) {
		val += 100;
		System.out.println("change1() :"+val);
	}
	static void change2(Value v) {
		v.val += 100; //main에서 생성된 객체의 참조값으로 객체의 값을 수정.
		System.out.println("change2() ;"+v.val);
	}
}