Multiple choice technology programming languages

What will be the output of the program?

public abstract class AbstractTest {
 public int getNum() {
  return 45;
 }
 public abstract class Bar {
  public int getNum() {
   return 38;
  }
 }
 public static void main(String[] args) {
  AbstractTest t = new AbstractTest() {
   public int getNum() {
    return 22;
   }
  };
  AbstractTest.Bar f = t.new Bar() {
   public int getNum() {
    return 57;
   }
  };
  System.out.println(f.getNum() + " " + t.getNum());
 }
}

  1. 57 22

  2. 45 38

  3. 45 57

  4. An exception occurs at runtime.

Reveal answer Fill a bubble to check yourself
A Correct answer
Explanation

The code creates an anonymous subclass of AbstractTest overriding getNum() to return 22. It then instantiates an anonymous subclass of inner class Bar, overriding getNum() to return 57. Evaluating f.getNum() + " " + t.getNum() outputs '57 22'.