G_0906_023

charl hi·2021년 9월 6일
0

국비

목록 보기
23/122

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원입니다.


0개의 댓글