티스토리 뷰

반응형
package prj190708;

class Dog{
	int zzz;
	int yyy;
	
	void setZzz(int zzz) {
		this.zzz = zzz;
	}
	void setYyy(int yyy) {
		this.yyy = yyy;
	}
	
	int getZzz() {
		return zzz;
	}
	
	int getYyy() { 
		return yyy;
	}
	
}

class Bus{
	double pp;
	double ttt;
	
	void setPp(double pp) {
		this.pp = pp;
	}
	
	void setTtt(double ttt) {
		this.ttt = ttt;
	}
	
	double getPp() {
		return pp;
	}
	double getTtt() {
		return ttt;
	}
}

class Polygon{
	float qqq;//8byte 크기 스택에 공간확보 사용가능
	float tire;//기본자료형은 이렇게만 가능
	
	Dog o = new Dog(); //자료형(사용자타입)필드
	Bus b = new Bus();
	Dog dog; // 스택(메모리)에 그냥 변수 선언 4바이트 공간 확보
	//주소없이 쓰레기 null값
	//사용자정의형(클래스)은 스택(참조변수/주소값)에 주소값이 있고
	//힙(heap) 메모리 공간에 Dog 타입의 크기만큼
	//공간을 확보하고 stack에 저장되어있는 주소값을 가리키고 있어서
	// 닷(.)연산자를 통해 멤버접근 가능
	
	void setQqq(float qqq) {
		this.qqq = qqq;
	}
	
	void setPolygonDog(Dog o) {
	   this.o = o;
	}
	
	void setPolygonBus(Bus b) {
		this.b= b;
	}
	
	void setTire(float tire) {
		this.tire = tire;
	}	

	
	float getQqq() {
		return qqq;
	}
	
	float getTire() {
		return tire;
	}
	
	int getPolygonDogYyy() {
		   return o.yyy;
	}
	int getPolygonDogZzz() {
		   return o.zzz;
	}
	
	double getPolygonBusPp() {
		return b.pp;
		
	}
	
	double getPolygonBusTtt() {
		return b.ttt;
	}


	Polygon(){}

	Polygon(Dog d){
		System.out.println("Dog 불러옴");
	}
	Polygon(Bus b){
		System.out.println("Bus 불러옴");
	}
	
}
public class TestClass0708 {

	public static void main(String[] args) {
		
		Dog d = new Dog();
		Bus b = new Bus();
		Polygon p = new Polygon(d);
		Polygon p1 = new Polygon(b);
////////////////polygon을 이용한 참조 변수로 setter에 접근하는데 파라미터로 dog용 참조변수 전달
////////////////polygon을 이용한 참조 변수로 setter에 접근하는데 파라미터로 bus용 참조변수 전달
		
		d.setYyy(3);
		d.setZzz(8);
		b.setPp(9);
		b.setTtt(10);
		
		p.setPolygonDog(d);		
		p1.setPolygonBus(b);
		
		System.out.println(p.getPolygonDogYyy()+"   "+p.getPolygonDogZzz());
		System.out.println(p1.getPolygonBusTtt()+"  "+ p1.getPolygonBusPp());
		
	}

}
반응형