C# Programming - Inheritance - Discussion

Discussion Forum : Inheritance - General Questions (Q.No. 8)
Which of the following is correct about the C#.NET snippet given below?
namespace IndiabixConsoleApplication
    class Baseclass
        public void fun()
            Console.WriteLine("Hi" + " ");
        public void fun(int i)
            Console.Write("Hello" + " ");
    class Derived: Baseclass
        public void fun()
            Console.Write("Bye" + " ");
    class MyProgram
        static void Main(string[ ] args)
            Derived d; 
            d = new Derived(); 
The program gives the output as: Hi Hello Bye
The program gives the output as: Bye Hello
The program gives the output as: Hi Bye Hello
Error in the program
Answer: Option
No answer description is available. Let's discuss.
5 comments Page 1 of 1.

Jana said:   10 years ago
d.fun() will call the derived class fun() method.

d.fun(int) will call the fun(int) method which is in the base class as it is not existing in base class.

Kazeem said:   1 decade ago
Whenever we are calling a Method the compiler First searches for the method in Derived class, if it doesnot finds it there. Then it searches it in base class.

Since fun() is available in Derived class. So it executes it. Rather than executing the base class fun().

New said:   1 decade ago
New keyword should be in the method func() of derived class to remove the warning.

Tejas Vishwakarma said:   1 decade ago
Its produces a warning during override. It would be avoid by using override keyword.

Ncn said:   1 decade ago
d.fun() will call fun() of derived class and for d.fun(77) since no match is found in derived class complier will search for matching typecast in base class.

Thus it will find fun(int i) and will execute it.

Post your comments here:

Your comments will be displayed after verification.