Polymorphism - Programming

Q1:

Which of the following statement is correct about the C#.NET code snippet given below?
public class Sample
{
    public int x;
    public virtual void fun()
    { }
}
public class DerivedSample : Sample
{
    new public void fun()
    { }
}

A DerivedSample class hides the fun() method of base class.

B The DerivedSample class version of fun() method gets called using Sample class reference which holds DerivedSample class object.

C
The code replaces the DerivedSample class version of fun() method with its Sample class version.

D It is not possible to hide Sample class version of fun() method without use of new in DerivedSample class.

ANS:A - DerivedSample class hides the fun() method of base class.

A. Correct.

B. Sample objSample = new DerivedSample();
objSample.fun(); //it will call fun method of Sample class.

C. No, The Code replaces the Sample class version of fun() method with its DerivedSample class version.

D. It is possible by using Override keyword.