this생성자
객체의 협력
다음과 그림과 같이 학생이 버스나 지하철을 탔을 경우 학생이 가진돈과 교통수단의 수입이 어떻게 변화하지는지 구현해보시오.
package kr.or.kh14;
class Bus{
int busNum;
int passCount;
int income;
Bus(int busNum){
this.busNum = busNum;
}
void take(int charge) { //매개변수 charge는 명당 요금
this.income += charge;
passCount++;
}
void busInfo() {
System.out.println(busNum+"번 버스의 승객의 수는 "+passCount+"명이고 수입은 "+income+"원입니다.");
}
}
class Subway{
int subLine;
int passCount;
int income;
Subway(int subLine){
this.subLine = subLine;
}
void take(int charge) { //매개변수 charge는 명당 요금
this.income += charge;
passCount++;
}
void subInfo() {
System.out.println(subLine+"호선 지하철의 승객의 수는 "+passCount+"명이고 수입은 "+income+"원입니다.");
}
}
class Student{
String name;
int grade;
int money;
Student(String name, int money){
this.name = name;
this.money = money;
}
void takeBus(Bus b) {
b.take(1000);
this.money -= 1000;
}
void takeSub(Subway s) {
s.take(1200);
this.money -= 1200;
}
void showInfo() {
System.out.println(name+"의 남은 돈은 "+money+"원입니다.");
}
}
public class TakeTransTest {
public static void main(String[] args) {
Student j = new Student("James", 5000);
Student t = new Student("Thomas", 10000);
Bus bus100 = new Bus(100);
Bus bus500 = new Bus(500);
Subway sub2 = new Subway(2);
j.takeBus(bus100);
t.takeSub(sub2);
//
j.showInfo();
t.showInfo();
bus100.busInfo();
bus500.busInfo();
sub2.subInfo();
}
}
James의 남은 돈은 4000원입니다.
Thomas의 남은 돈은 8800원입니다.
100번 버스의 승객의 수는 1명이고 수입은 1000원입니다.
500번 버스의 승객의 수는 0명이고 수입은 0원입니다.
2호선 지하철의 승객의 수는 1명이고 수입은 1200원입니다.