What is the output of the following code?     class A {    …

What is the output of the following code?     class A {               void foo() {  System.out.println(“1”); }               public A() {  System.out.println(“2”); foo();    }     }     class B extends A {               public B() { System.out.println(“3”);  }               void foo() { System.out.println(“4”);  }     }      public class Client {               public static void main(String [] args) {                              new B();               }    }

Following Type Eraser, how does the code below look like?   …

Following Type Eraser, how does the code below look like?                  Before: class GeometricObject {  public double getArea() {return 1.0;}  } public static boolean  equalArea(E object1, E object2)  {     return object1.getArea() ==  object2.getArea(); }                  After: ?

What is the output of the code below? Explain. (Note: there…

What is the output of the code below? Explain. (Note: there are no compilation errors)   class A {                public int x;                public A(int x) { this.x = x; }                public String toString() { return “x = ” + x; } }   class Super {   public A a;   public Super() {                System.out.println(“Super()”);                foo();   }   public Super (A a) {                System.out.println(“Super(A a)”);                this.a = a;                foo();   }   public void foo() {                System.out.println(“Super.foo()”);                System.out.println(a);   } }   public class Sub extends Super {   public A a;   public Sub() {                System.out.println(“Sub()”);                foo();   }   public Sub (A a) {                System.out.println(“Sub(A a)”);                this.a = a;                foo();   }   @Override public void foo() {                    System.out.println(“Sub.foo()”);                System.out.println(a);   } } public static void main(String[] args) { new Sub(); }