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

What is the output of the code below?   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 Super(new A(2)); }  

Consider the following code, and suppose the main method in…

Consider the following code, and suppose the main method in Sub is executed. public class Super {      private String y;      public Super () { stut();}      public void stut() {           if (y == null){              y = “cat”;          }           else {              y = “dog”;          }          System.out.println(y);    }} public class Sub extends Super {      private String x;      public Sub (String s) { x = s;}            @Override      public void stut() {         x = x + x;         System.out.println(x);      }      public static void main(String[] args) {          Super s = new Sub(“dog”);      }} What is the output?