JAVA/JAVA_복습문제

JAVA_class 만들기_#2_생성자 오버로딩_Circle

onivv 2023. 11. 30. 16:30

문제

Circle 원 클래스가 있습니다.

new Circle(10); // 원 : 반지름 10 넓이 314.0

new Circle("도넛"); // 도넛 : 반지름 1 넓이 3.14

new Circle("피자",12); // 피자 : 반지름 12 넓이 452.16

HINT 모든 원들은 원주율(PI)이라는 3.14값을 갖고있어용

 

원객체명.printInfo();

--> 원는(은) 넓이가 314.0입니다.

--> 피자는(은) 넓이가 452.16입니다.

 

힌트 ★

< 공유자원 >

- static final double PI = 3.14

- 어떤 클래스의 모든 객체가 동일한 멤버 변수값을 가질때, 그 멤버변수를 공유자원이라고 함

- 객체와 무관하므로 static을 붙임

- 생성자에서 초기화하지 않고 클래스에서 초기화를 함

--> 각각의 객체마다 다른값인가? --> 멤버변수(속성)

--> 각각의 객체가 모두 같은값인가? --> static(클래스 소속)

 

코드

package class01;

class Circle{
	String name;
	int radi;
	double circum;
	static final double PI = 3.14;
    
	Circle(int radi){
		this("원",radi);
	}
	Circle(String name){
		this(name,1);
	}
	Circle(String name, int radi){
		this.name = name;
		this.radi = radi;						
		this.circum = this.radi * this.radi * Circle.PI; 
		//PI:클래스 소속이니까 this. ㄴㄴ 가독성을 위해서 Circle붙이기
		//객체소속.멤버변수 xxx //클래스소속.변수 ooo
	}
	void printInfo() {
		System.out.println(this.name + "는(은) 넓이가 " + this.circum + "입니다.");
	}
	void changeRadi(int radi) {
		this.radi = radi;
		this.circum = this.radi * this.radi * Circle.PI;
	}
}

public class Test03_Circle {
	
	public static void main(String[] args) {
		
		Circle c1 = new Circle(10);		// 원 : 반지름 10, 넓이 314.0
		Circle c2 = new Circle("도넛");		// 도넛 : 반지름 1, 넓이 3.14
		Circle c3 = new Circle("피자",12);	// 피자 : 반지름 12, 넓이 452.16
		
		c1.printInfo();
		c2.printInfo();
		c3.printInfo();
		
		Circle c = new Circle("거울");
		c.changeRadi(2);	//인자1개,outputx
		c.printInfo();
	}

}