JAVA_06_클래스 정의 & cv, iv, lv & 생성자

hyeong taek jo·2023년 7월 3일

JAVA

목록 보기
6/39

📌1. 클래스 영역

1) 클래스 변수 cv (static 변수/공유 변수)

  • 클래스 안에 있는 staic 이 붙은 iv 변수
  • 생성시기 : 클래스가 메모리(RAM)에 올라갈 때(객체 생성 전에)
  • ✨객체 생성없이 아무때나 사용가능
  • 공통 속성
  • 공유하기에 ✨객체 안에 없고 ✨ 다른 공간에 하나만 있다.

2) 인스턴스 변수 iv

  • 클래스 안에 있는 일반 변수
  • ✨생성시기 : 인스턴스/객체가 생성되었을 때
  • 개별 속성
    --> iv를 묶어 놓은 게 객체라고 생각하면 된다.

📌2.메소드 영역

지역변수 lv

  • 메소드 안에 있는 변수

---> 객체는 iv의 묶음이라고 이해하라


📌3.클래스변수와 인스턴스변수의 사용법

한 파일에 클래스가 여러개인 경우

package ch05;


class Car1 {
	String color;
	int	   speed;   //int는 초기값이 없으면 0으로 잡힘
	
	
	// *** 동일 클래스 내의 모든 인스턴스들이 공유하는 변수 ---> class 변수
	static int wheel;    // 객체를 생성하지 않고도 사용할 수 있다.
	
	
	void speedUp() {
		speed++;
		System.out.println(speed+"속도를 올렸다.");
	}
	void print() {
		System.out.println("색깔 : " + color);
		System.out.println("속도 : " + speed);
		System.out.println("바퀴 : " + wheel);
	}	
}

public class Car1Ex { // public은 한 파일에 한개만 들어갈 수 있다.
	                  // 하지만 한 파일에 클래스가 여러개 들어가는게 가능하다.

	public static void main(String[] args) {
		// c2.speed = 200;  // speed는 인스턴스 변수라서 객체를 생성해야지 사용가능
		Car1.wheel = 8;  // static 변수라서 객체 생성없이 같은 클래스 내에서는 그냥 사용가능
		
		Car1 c1 = new Car1();
		Car1 c2 = new Car1();
		c1.color = "빨강"; //위에 객체를 생성해서 사용가능
		c1.speed = 200; //위에 객체를 생성해서 사용가능
		c2.color = "노랑"; //위에 객체를 생성해서 사용가능
		
		c1.print();
		c2.print();
		
	}

}

색깔 : 빨강
속도 : 200
바퀴 : 8
색깔 : 노랑
속도 : 0
바퀴 : 8

클래스가 서로 다른 파일에 있는 경우

public class Car3 {    /// main이 없으므로 이 클래스는 다른 파일에서 
                       // 객체를 불러와서 사용할 용도

		String name;     // 차 이름
		int    inTime;   // 입고시간
		int    outTime;  // 출고시간
		int    fee;      // 주차요금
		
		//상수
		final int AMTPERTIME = 3000;  //상수는 관례적으로 대문자로 쓴다.
		
		Car3() { // 기본생성자
		}        // Car3 폴더에 c4 객체는 파라미터가 없기 때문에 기본생성자 생성이 필요함
		         // 하지만 밑에 파라미터 생성자가 있어서 자동으로 생성 안됨
		
		//생성자 ---> Constructor
		Car3(String n, int in, int out) {  //파라미터를 받아오는 생성자가 있으므로
			                               //기본 생성자가 필요없다.
			name    = n;
			inTime  = in;
			outTime = out;
		}
		 
		void print() {        //메서드에 return값이 없으면 void를 쓴다.
			int fee = (outTime - inTime) * AMTPERTIME;
			System.out.println("차   이름 :" + name);
			System.out.println("입고시간 :" + inTime);
			System.out.println("출고시간 :" + outTime);
			System.out.println("주차요금 :" + fee);
			System.out.println("-----------------------------");
		}
		
		int min30After(int inTime) {  // return 타입이 int면 반드시 int를 return 해줘야한다.
			int After30 = inTime + 30;
			System.out.println("after30 :" + After30);
			return After30;
		}
		
		
}

public class Car3Ex {

	public static void main(String[] args) {
		
		// 객체를 생성과 동시에 생성자를 생성하게 된다.
		// 생성자가 불러오는 객체에 없는 경우에만 기본생성자를 자동으로 생성해준다
		// 만일 생성자가 있으면 기본 생성자는 생성하지 않는다.
		Car3 c1 = new Car3("소나타", 10, 14); 
		Car3 c2 = new Car3("그랜져", 9, 20);
		Car3 c3 = new Car3("아반테", 12, 13);
		Car3 c4 = new Car3(); 
		c4.name = "제네시스";
		
		//final
		//c1.AMTPERTIME = 2500; final은 상수라서 변경이 불가능
		
		c1.print();
		c2.print();
		c3.print();
		c4.print();
	}
}

차 이름 :소나타
입고시간 :10
출고시간 :14
주차요금 :12000


차 이름 :그랜져
입고시간 :9
출고시간 :20
주차요금 :33000


차 이름 :아반테
입고시간 :12
출고시간 :13
주차요금 :3000


차 이름 :제네시스
입고시간 :0
출고시간 :0
주차요금 :0


profile
마포구 주민

0개의 댓글