본문 바로가기

AWS CLOUD FRAMEWORK/Java

[Day10] Reference

package oop;

class Ball {
	// 아무 내용도 작성하지 않음 (그래도 기본생성자는 만들어진다)
	// 그냥 공
}

class Kid {
	String name;
	Ball ball;		// Ball 타입의 객체를 저장할 수 있는 변수 ball
	
	Kid(String name) {		// Kid 타입의 객체를 생성하기 위해서는 문자열 이름이 필요하다
		this.name = name;
	}
	
	void setBall(Ball ball) {	// 외부에서 공을 받아서, 내가 가지게 한다
		this.ball = ball;
	}
	
	void throwBall(Kid other) {	// other에게 내 공을 넘기고, 내 손은 비운다
		other.ball = this.ball;
		this.ball = null;		// 자바에서 대입은 복사연산이므로, 직접 비워야 한다
	}
	
	boolean hasBall() {			// 객체가 공을 소유하고 있는지 반환한다
		return ball != null;
	}
}

public class Ex05_Reference {
	public static void main(String[] args) {
		Kid p1 = new Kid("짱구");
		Kid p2 = new Kid("훈이");
		
		Ball ball = new Ball();
		
		p1.setBall(ball);	// 짱구가 놀이터에서 굴러다니는 공을 하나 주웠습니다
		System.out.println(p1.name + "가 공을 가지고 있는가 : " + p1.hasBall());
		System.out.println(p2.name + "가 공을 가지고 있는가 : " + p2.hasBall());
		System.out.println();
		
		// 짱구가 훈이에게 공을 던집니다
		p1.throwBall(p2);
		System.out.println(p1.name + "가 공을 가지고 있는가 : " + p1.hasBall());
		System.out.println(p2.name + "가 공을 가지고 있는가 : " + p2.hasBall());
		System.out.println();
		
		// 훈이가 짱구에게 공을 던집니다
		p2.throwBall(p1);
		System.out.println(p1.name + "가 공을 가지고 있는가 : " + p1.hasBall());
		System.out.println(p2.name + "가 공을 가지고 있는가 : " + p2.hasBall());
		System.out.println();
	}
}

'AWS CLOUD FRAMEWORK > Java' 카테고리의 다른 글

[Day10] Quiz  (0) 2023.04.05
[Day10] AccessModifier  (0) 2023.04.05
[Day10] Ex04  (0) 2023.04.05
[Day10] Ex02_Constructor  (0) 2023.04.05
[Day10] Ex02  (0) 2023.04.05