본문 바로가기

콩's EDUCATION/콩's JAVA_RUN

Java 문제 4

다음과 같은 설명을 읽고 Duck Sparrow 클래스를 작성하십시오.

PlayBird 클래스를 작성하세요.(main메소드)

Bird 클래스를 정의하여 Duck Sparrow 클래스를 하위클래스로 정의합니다. 이 경우 두 클래스의 공통 변수와 공통적으로 구현할 메서드가 있으면 Bird 클래스에 정의하고 Duck Sparrow 클래스마다 서로 다르게 구현할 메서드는 각각의 클래스에 정의하십시오.

 

 

 

오리(Duck) 클래스와 참새(Sparrow) 클래스는 이름을 나타내는 name과 다리의 수를 나타내는 legs, 몸길이를 나타내는 length 데이터를 가지고 있다.
메소드로는 날다 fly, 울다 sing, 이름기록하기 setName, 이름출력하기 print 를 가지고 있다.

오리(Duck) 클래스는 web=”오리발변수와 수영하다 swim 메소드를 추가적으로 가지고 있다.

참새(Sparrow) 클래스는 tip=”부리변수를 가지고 있다.

 

PlayBird 클래스를 이용하여 두 클래스의 메소드를 호출시켰을 때 콘솔에 출력되는 결과는 다음과 같다.

[PlayBird 실행결과]

오리(꽥꽥이)는 날지 않습니다.

오리(꽥꽥이)  소리내어 웁니다.

오리의 이름은 꽥꽥이 입니다.

오리는 오리발을 가지고 수영합니다.

참새(짹짹)가 날아다닙니다.

참새(짹짹)  소리내어 웁니다.

참새의 이름은 짹짹 입니다.

class PlayBird {

public static void main(String args[] ){

 Duck 클래스 타입의 객체의 fly 메서드 호출

 Duck 클래스 타입 객체의 sing 메서드 호출

Duck 클래스 타입 객체의 print 메서드 호출

Duck 클래스 타입 객체의 swim 메서드 호출

Sparrow 클래스 타입의 객체의 fly 메서드 호출

 Sparrow 클래스 타입 객체의 sing 메서드 호출

Sparrow 클래스 타입 객체의 print 메서드 호출

}

}

해결.

Bird 추상 클래스 선언, duck, sparrow에서 해당 클래스 구현하고

PlayBird에서 결과를 도출한다.


 

Bird

 

package Bird.project;

abstract class Bird {
 String name;
 int legs;
 int length;
 
 public abstract void fly();
 public abstract void sing();
 public abstract void setName();
 public abstract void print();
}

 

Duck

 

package Bird.project;

class Duck extends Bird{
 String web = "오리발"; 
 
 public Duck(String name) {
  this.name = name;
 }
 
 @Override
 public void fly() {
  System.out.println("오리 ("+name+")는 날지 않습니다.");
 }

 @Override
 public void sing() {
  System.out.println("오리 ("+name+")가 소리내어 웁니다.");
 }

 @Override
 public void setName() {
 }

 @Override
 public void print() {
  System.out.println("오리의 이름은 "+name+" 입니다.");
 }

 void swim(){
  System.out.println("오리는 "+web+"을 가지고 수영합니다");  
 }
}

 

Sparrow

 

package Bird.project;

public class Sparrow extends Bird{
 String tip = "부리";
 
 public Sparrow(String name) {
  this.name = name;
  }

 @Override
 public void fly() {
  System.out.println("참새("+name+")가 날아다닙니다.");
 }

 @Override
 public void sing() {
  System.out.println("참새("+name+")가 소리내어 웁니다.");
 }

 @Override
 public void setName() {}
 @Override
 public void print() {
  System.out.println("참새의 이름은 "+name+" 입니다.");  
 } 
}

 

PlayBird

 

package Bird.project;

public class PlayBird {
 public static void main(String[] args) {
 Bird b1 = new Duck("꽥꽥이");
 b1.fly();
 Bird b2 = new Duck("꽥꽥이");
 b2.sing();
 Bird b3 = new Duck("꽥꽥이");
 b3.print();
 Bird b4 = new Duck("꽥꽥이");
 ((Duck) b4).swim();
 Bird b5 = new Sparrow("짹짹");
 b5.fly();
 Bird b6 = new Sparrow("짹짹");
 b6.sing();
 Bird b7 = new Sparrow("짹짹");
 b7.print(); 
 }
}

 

PlayBird (for문)

 

package Bird.project;

public class PlayBird {
 public static void main(String[] args) {
 Bird[] bird = new Bird[2];
 bird[0] = new Duck("");
 bird[1] = new Sparrow("");
 
 for(int i=0; i<bird.length;i++){
  bird[i].fly();
  bird[i].sing();
  bird[i].print();
  if(bird[i] instanceof Duck){
   ((Duck)bird[i]).swim();
  }
 }

 


Bird.java

 

Duck.java

 

PlayBird.java

 

 

PlayBird.java

(for 문)

Sparrow.java