[Bus.java]
package cooperation;
public class Bus {
// 버스 속성을 정의해줌
int busNumber;
int passengerCount;
int money;
public Bus(int busNumber){
this.busNumber = busNumber;
}
// 승객을 태웠을 때
public void take(int money){
// 승객이 낸 돈
this.money += money;
// 승객 수 늘어남
passengerCount++;
}
// 버스의 정보를 나타냄
public void showInfo(){
System.out.println("버스" + busNumber +"번의 승객은" + passengerCount +"명이고, 수입은" + money + "입니다.");
}
}
[Subway.java]
package cooperation;
public class Subway {
// 버스 속성을 정의해줌
int lineNumber;
int passengerCount;
int money;
public Subway(int linNumber) {
this.lineNumber = linNumber;
}
// 승객을 태웠을 때
public void take(int money) {
// 승객이 낸 돈
this.money += money;
// 승객 수 늘어남
passengerCount++;
}
// 지하철의 정보를 나타냄
public void showInfo() {
System.out.println("지하철" + lineNumber + "번의 승객은" + passengerCount + "명이고, 수입은" + money + "입니다.");
}
}
[Student.java]
package cooperation;
public class Student {
// 함부로 건들면 안되는 값만 private으로 둠
// 무조건 private이 좋은 건 아님
String studentName;
int grade;
int money;
public Student(String studentName, int money){
this.studentName = studentName;
this.money = money;
}
// 어떤 버스를 탈 것인지 매개변수로 받음
public void takeBus(Bus bus) {
bus.take(1000);
money -= 1000;
}
// 생성된 인스턴스가 매개변수로 들어와야함
public void takeSubway(Subway subway) {
subway.take(1500);
money -= 1500;
}
public void showInfo(){
System.out.println(studentName + "님의 남은 돈은 "+ money + "입니다.");
}
}
[TakeTrans]
package cooperation;
public class TakeTrans {
public static void main(String[] args) {
// 5000원 가진 제임스 생성
Student jiWon = new Student("jiWon", 5000);
Student hamTol = new Student("hamTol", 10000);
Bus bus100 = new Bus(100);
jiWon.takeBus(bus100);
jiWon.showInfo();
hamTol.takeBus(bus100);
hamTol.showInfo();
bus100.showInfo();
Subway subwayGreen = new Subway(2);
jiWon.takeSubway(subwayGreen);
subwayGreen.showInfo();
hamTol.takeSubway(subwayGreen);
hamTol.showInfo();
subwayGreen.showInfo();
}
}