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
반응형
'HRD_훈련 > 실습' 카테고리의 다른 글
[JAVA] 해시맵 실습 (17일차) (0) | 2023.06.08 |
---|---|
[JAVA] 인터페이스의 추상 메소드를 구현한 클래스 작성하기 (0) | 2023.06.05 |
[JAVA] 심화 문제 풀이 (14일차) (0) | 2023.06.01 |
[JAVA] TV 상속 (0) | 2023.05.31 |
[JAVA] 심화 문제 풀이 (13일차) (0) | 2023.05.31 |