본문 바로가기
Back/JAVA

[심화예제] 메소드 매개변수로 객체를 보내보자

by 시월해 2021. 3. 12.
public class Student {

	// 멤버변수
	String  studentName;   //학생이름
	int tMoney;            //학생 교통카드(잔액)
	
	public Student() {	}; //기본생성자
	
	public Student(String studentName, int tMoney) {
		this.studentName = studentName;
		this.tMoney = tMoney;
	} //인자 생성자
	
	//버스를 타고 학교에 가는 경우
	void takeBus(Bus bus) {
		bus.take(1200);
		this.tMoney -= 1200;
	}
	
	//지하철을 타고 학교에 가는 경우
	void takeSubway(Subway subway) {
		subway.take(1250);
		this.tMoney -= 1250;
	}
	
	//학생 정보 출력
	void showStudentInfo() {
		System.out.println(studentName+"님의 카드 잔액은 "+tMoney+"원 입니다.");
	}
}
public class Bus {

	// 멤버변수
	int busNumber;      //버스 번호
	int passengerCount; //승객수
	int money;          //버스 회사의 수입
	
	public Bus() { } // 기본 생성자
	
	public Bus(int busNumber) {
		this.busNumber = busNumber;
	}  // 인자 생성자
	
	// 승차 메서드
	void take(int money) {
		this.money += money;
		passengerCount++;
	}
	
	// 버스회사 정보 출력
	void showBusInfo() {
		System.out.println("버스 No : " + busNumber);
		System.out.println("버스 승객 수 : " + passengerCount);
		System.out.println("버스 회사 수입 : " + money);
		System.out.println(":::::::::::::::::::::::::::::::::::::::");
	}

}
public class Subway { // 지하철 객체
	
	// 멤버변수
	int lineNumber;     // 지하철 노선
	int passengerCount; // 지하철 노선 승객 수
	int money;          // 지하철 회사의 수입
	
	public Subway() {}  // 기본 생성자
	
	public Subway(int lineNumber) {
		this.lineNumber = lineNumber;
	}  // 인자 생성자
	
	// 승차 메서드
	void take(int money) {
		this.money += money;
		passengerCount++;
	}
	
	// 지하철 회사 정보 출력
	void showSubwayInfo() {
		System.out.println("지하철 노선 No : " + lineNumber);
		System.out.println("지하철 승객 수 : " + passengerCount);
		System.out.println("지하철 회사 수입 : " + money);
		System.out.println(":::::::::::::::::::::::::::::::::::::::");
	}

}
public class Exam {

	public static void main(String[] args) {
		
		Student student1 = new Student("강혜린", 60000);
		Student student2 = new Student("안형준", 60000);
		
		Bus bus100 = new Bus(100);
		
		Subway subwayGreen = new Subway(2);
		
		student1.takeBus(bus100);
		student2.takeSubway(subwayGreen);
		
		// student1,2 학생에 대한 정보를 출력
		student1.showStudentInfo();
		System.out.println();
		
		student2.showStudentInfo();
		System.out.println();
		
		// bus100에 대한 정보를 출력해 보자.
		bus100.showBusInfo();
		System.out.println();
		
		// subwayGreen에 대한 정보를 출력해 보자.
		subwayGreen.showSubwayInfo();
		System.out.println();
		
	}

}

takeBus(), takeSubway()를 통해 넘어간 매개변수(Bus100과 subwayGreen객체)들은 모두 주소값을 가진 참조형 변수이다. 때문에 main에 생성된 객체와 매개변수를 통해 넘어간 객체는 같은 데이터를 가지게 된다.(=call by reference)

 

'Back > JAVA' 카테고리의 다른 글

[심화예제] 2차원 배열 객체에서의 예외처리  (0) 2021.03.15
예외(exception) 처리  (0) 2021.03.15
final 지정자  (0) 2021.03.12
접근지정자(접근제어자)권한  (0) 2021.03.12
자바 빈(Java Bean)과 패키지(package)  (0) 2021.03.12