staic 이 붙은 iv 변수---> 객체는 iv의 묶음이라고 이해하라
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