Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write the code for all the necessary classes and/or interfaces for a solution to

ID: 3707714 • Letter: W

Question

Write the code for all the necessary classes and/or interfaces for a solution to the problem below. Focus on class structure and interaction. You may implement your solution however you wish, but you will be graded on the appropriateness of your solution to the requirements. Note the use of capit and bold for clarification in the problem. You may use whatever constructors or additional methods you wish. - Define a structure that can represent Animals. - A general Animal s hould not be able to be instantiated and has a permanent name for its lifetime. Animals have two behaviors; they can speak() and they can move ). By default, when an animal moves, the message "This animal moves forward" is displayed. By default, when an animal speaks, the message "This animal speaks" is displayed. - Define also two classes, Goose and Lynx, that are Animals. Both Goose and Lynx behave such that where "animal" is displayed in speak( ) or move(), "goose" or "lynx" is displayed by the appropriate classes. Define the default constructors to accomplish this Finally, any instance of Goose can fly(), just as any Flying object can - An Airplane is also a Flying object. Define the Airplane class such that it is Flying and make sure that any instance of Goose is also Flying. The specific behaviors when instances of either class fly() should display in the message: the class name and name of object soars, wings flapping for a Goose or th message the class name and name of object soars, engines running for an Airplane.. You may use getName).get.Class() Instances of either Goose or Airplane should be able to be stored in a variable of type Flying All classes should include default constructors and if needed overloaded constructors. - Hand in all abstract classes, classe different behaviors for a Lynx, Goo output. s and interfaces along with a client class that demonstrates the se and Airplane. You also must provide a screen shot of your

Explanation / Answer

// ------ Animal.java --------------

// This is Animal abstract class which defines default behavior of methods.

public abstract class Animal {   

   public void speak() {

       System.out.println("This animal speaks.");

   }   

   public void move() {

       System.out.println("This animal moves forward.");

   }

}

// ----------- Flying.java -------------

// This is declaration of flying behavior.

public interface Flying {

   void fly();

}

// -------- Lynx.java -----------

// This Lynx extends behaviors of animal and override them.

public class Lynx extends Animal {  

   public Lynx() {

   }

   public void speak() {

       System.out.println("Lynx speaks.");

   }  

   public void move() {

       System.out.println("Lynx moves forward.");

   }

}

//------------ Goose.java --------------

// This Goose is extended version of animal and it implements Flying behavior.

public class Goose extends Animal implements Flying {

   public Goose() {

   }

   public void speak() {

       System.out.println("Goose speaks.");

   }  

   public void move() {

       System.out.println("Goose moves forward.");

   }  

   @Override

   public void fly() {

       System.out.println(getClass().getSimpleName() + " wings flapping.");  

   }

}

// --------- Airplane.java ---------

// This implements flying behavior.

public class Airplane implements Flying {

   public Airplane() {  

   }

   @Override

   public void fly() {

       System.out.println(getClass().getSimpleName() + " engines running.");

   }

}

//---------- DemoApplication.java --------------

// This class demonstrates the object creation and assignment.

public class DemoApplication {

   public static void main(String[] args) {

      

       Animal animal1 = new Goose();

       animal1.speak();

      

       Animal animal2 = new Lynx();

       animal2.speak();

      

       Flying flyingObject1 = new Goose();

       flyingObject1.fly();

      

       Flying flyingObject2 = new Airplane();

       flyingObject2.fly();

      

   }

}

// -------------- Output -------------------

Goose speaks.
Lynx speaks.
Goose wings flapping.
Airplane engines running.