Avatar a1 = new Earth(); Avatar a2 = new Fire(); Earth e…

   Avatar a1 = new Earth(); Avatar a2 = new Fire(); Earth e = new Earth(); Fire f = new Fire();  For the class hierarchy and declarations above, correctly indicate whether each of the following statements will compile and what will happen at runtime (runs correctly or runtime exception). It may be helpful to use scratch paper to keep track of each variable’s static and dynamic type. 1  Avatar avatar = (Avatar) f; 2   Fire f1 = (Fire) a1;  3  Fire f2 = (Fire) a2; 4  Fire f3 = (Fire) e;   1   : [1]  2   : [2]  3   : [3]  4   : [4]

You have files Parent.java, Child.java, and a driver class n…

You have files Parent.java, Child.java, and a driver class named Driver.java. Fill in the correct visibility modifiers so that the comments in the class Child and Driver’s main method are upheld. public class Parent {   1 void method1() { /*compiles*/ }   2 void method2() { /*compiles*/ }   3 void method3() { /*compiles*/ } } —– in a separate file in a different package/directory —– public class Child extends Parent {   public void foo() { method1(); // doesn’t compile method2(); // compiles }} —– in a separate file in a different package/directory —– public class Driver { public static void main(String[] args) { Child c = new Child(); c.method1(); // doesn’t compile c.method2(); // doesn’t compile c.method3(); // compiles }}   1   : [1]  2   : [2]  3   : [3]

Given the following class hierarchy, identify whether the me…

Given the following class hierarchy, identify whether the method foo is overloaded, overridden, or neither by the subclass: public class Parent {    public void foo(int i, String s) { /* implemented */ }}public class Child extends Parent {    public void foo(int i) { /* implemented */ }}