What will be the output?

public class Base {
  public static final String FOO = "foo";
  public static void main(String[] args) {
    Base b = new Base();
    Sub s = new Sub();
    System.out.print(Base.FOO);
    System.out.print(Sub.FOO);
    System.out.print(b.FOO);
    System.out.print(s.FOO);
    System.out.print(((Base)s).FOO);
  } 
}

class Sub extends Base {
    public static final String FOO="bar";
}

  1. foofoofoofoofoo

  2. foobarfoobarbar

  3. foobarfoofoofoo

  4. foobarfoobarfoo

  5. barbarbarbarbar


Correct Option: D

AI Explanation

To answer this question, let's go through each option to understand why it is correct or incorrect:

Option A) foofoofoofoofoo - This option is incorrect. The output will not consist of repeated "foo" values throughout.

Option B) foobarfoobarbar - This option is incorrect. The output will not consist of repeated "foobar" values throughout.

Option C) foobarfoofoofoo - This option is incorrect. The output will not consist of the sequence "foobar" followed by "foo" repeated three times.

Option D) foobarfoobarfoo - This option is correct. The output will consist of the sequence "foobar" followed by "foobar" again, and then "foo".

Option E) barbarbarbarbar - This option is incorrect. The output will not consist of repeated "bar" values throughout.

The correct answer is Option D. This option is correct because the output will be "foobarfoobarfoo".

Explanation:

  • The Base.FOO will print "foo" since it is a static final variable in the Base class.
  • The Sub.FOO will print "bar" since it is a static final variable in the Sub class.
  • The b.FOO will print "foo" since it is accessing the FOO variable from the Base class using an instance of the Base class.
  • The s.FOO will print "bar" since it is accessing the FOO variable from the Sub class using an instance of the Sub class.
  • The ((Base)s).FOO will print "foo" since it is explicitly casting the Sub instance s to a Base instance and accessing the FOO variable from the Base class.

Therefore, the output will be "foobarfoobarfoo".

Please select the most appropriate option.

Find more quizzes: