728x90
반응형

문제1

아래의 Fruit 클래스와 main를이용해 Banana, Orange, Apple 클래스를 작성하라.

  • Fruit 클래스 상속 받아 Banana, Orange, Apple 클래스 생성
  • 3개의 클래스는 int형 price 변수를 가지며, 생성자를 통해 초기화
  • main 에서 다음 과정을 통해 객체 생성
  • Banana banana = new Banana ("바나나", "노란색", 1000);
  • Orange orange = new Orange ("오렌지", "주황색", 2000);
  • Apple apple = new Apple ("사과", "빨간색", 1500);

 

 

▶ Banana 코드

public class Orange extends Fruit{
	private int price;
	
	Orange(String name, String color, int price){
		super(name, color);
		this.price=price;
	}

	public int getPrice() {
		return price;
	}
	public void SetPrice(int price){
		this.price=price;
	}
}

 

 

▶ Orange 코드

public class Orange extends Fruit{
	private int price;
	
	Orange(String name, String color, int price){
		super(name, color);
		this.price=price;
	}

	public int getPrice() {
		return price;
	}
	public void SetPrice(int price){
		this.price=price;
	}
}

 

 

▶ Apple 코드

public class Apple extends Fruit{
	private int price;
	
	Apple(String name, String color, int price){
		super(name, color);
		this.price=price;
	}

	public int getPrice() {
		return price;
	}
	public void SetPrice(int price){
		this.price=price;
	}
}

 

 

 

문제2

main문에 이름을 출력하는 pack()을 만들어 아래 내용을 출력하시오. 업캐스팅을 이용하시오.

바나나를 담았습니다.
오렌지를 담았습니다.
사과를 담았습니다.

 

 

▶ main 코드

	static void pack(Fruit fruit){
		System.out.println(fruit.getName()+"를 담았습니다.");
	}//슈퍼클래스인 Fruit 타입으로 업캐스팅
	
	public static void main(String[] args) {
		Banana banana = new Banana("바나나","노란색",1000); //바나나 객체
		Orange orange = new Orange("오렌지","주황색",1500); //오렌지 객체
		Apple apple = new Apple("사과","빨간색",2000); //사과 객체
		
		pack(banana);
		pack(orange);
		pack(apple);
	}//main_end

 

 

▶ 출력 결과

바나나를 담았습니다.
오렌지를 담았습니다.
사과를 담았습니다.

 

 

 

문제3

main문에 금액과 이름을 출력하는 pack()을 만들어 아래 내용을 출력하시오. instanceof와 다운캐스팅을 이용하시오.

1000원짜리 바나나를 담았습니다.
1500원짜리 오렌지를 담았습니다.
2000원짜리 사과를 담았습니다.

 

 

▶ pack 코드

※ fruit.getPrice();업캐스팅했기 때문에 바로 접근할 수 없다. 다운캐스팅을 이용하면 fruit.getPrice()에 접근이 가능하다.

	static void pack(Fruit fruit){ //슈퍼클래스인 Fruit 타입으로 업캐스팅
		int price=0;
		if(fruit instanceof Banana) //fruit가 Banana 타입이면 true
			price =((Banana)fruit).getPrice(); //다운캐스팅
		else if(fruit instanceof Orange)
			price =((Orange)fruit).getPrice();
		else if(fruit instanceof Apple)
			price =((Apple)fruit).getPrice();
		
		System.out.println(price+"원짜리 "+fruit.getName()+"를 담았습니다.");
	}
  •  if문 안에 instanceof를 작성하여 어떤 객체인지 확인한다.
  • 조건문이 객체와 일치하여 true(참)가 되면 조건문 안의 내용이 실행된다.

 

 

▶ 출력 결과

1000원짜리 바나나를 담았습니다.
1500원짜리 오렌지를 담았습니다.
2000원짜리 사과를 담았습니다.

 

 

 

문제4

fruit 클래스에 view 메소드를 정의하고, Banana 클래스에서 오버라이딩을 이용해 재정의하여 아래 내용을 출력하시오.

	void view(){
		System.out.println("종류:"+name+",색:"+color);
	}

결과:원숭이가 좋아하는 바나나=>종류:바나나,색:노란색

 

 

▶ Banana  코드

	void view(){
		System.out.print("원숭이가 좋아하는 바나나=>");
		super.view();//부모클래스의 view() 호출
	}//오버라이딩(재정의)

 

 

▶ main  코드

		banana.view();

 

 

728x90
반응형

+ Recent posts