C# Programming - Inheritance - Discussion

Discussion Forum : Inheritance - General Questions (Q.No. 2)
Which of the following statements should be added to the subroutine fun( ) if the C#.NET code snippet given below is to output 9 13?
class BaseClass
    protected int i = 13;
class Derived: BaseClass
    int i = 9; 
    public void fun()
        // [*** Add statement here ***]
Console.WriteLine(base.i + " " + i);
Console.WriteLine(i + " " + base.i);
Console.WriteLine(mybase.i + " " + i);
Console.WriteLine(i + " " + mybase.i);
Console.WriteLine(i + " " + this.i);
Answer: Option
No answer description is available. Let's discuss.
17 comments Page 1 of 2.

Sandeep said:   6 years ago
In BaseClass 'i' is local variable, and inside DerivedClass 'i' is again a local variable of it, So, 9 value scope is inside the DerivedClass and 13 scope is outside the DerivedClass, so, to call the base class members we should use "base" keyword console.WriteLine(i+""+base.i);.

Mash said:   8 years ago

Base is a keyword of c# which is used here to call the I variable of the base class-BaseClass to differ it from the I variable of the derived class-Derived. Whatever, actually it was not necessary to do this if both of the variable were not declared using the same identifier-i.

Amit said:   9 years ago
using System.IO;
using System;

public class BaseClass
public int k = 13;
public class Derived: BaseClass
int i = 9;
public static void Main()
Derived d=new Derived();
Console.WriteLine("{0} {1}",d.i,d.k);

Ndikho said:   8 years ago

They might look the same but please check the format should the output(9 13) be.

In case, you not aware, 'base' refers to the base class/superclass. So if you say 'base.i' you refer to base class.

Hope you answered.

Sudhakar said:   1 decade ago
Private is the default access modifier for members, if you don't specify access specifier then compiler assumes it is private, private members are not accessible in derived class hence you will get error.

Neelendu said:   1 decade ago
Removing protected keyword become private. Because default scope of class member is private which is not accessible by other class or type.

Here use of protected is:

Only child class access this data.

Jana said:   9 years ago
To get output as 9 13,

First you need to get the derived class i value and then you can get the base class i value by object of base class as base.i

Where base is object of BaseClass.

Divya said:   10 years ago
By default csharp class members are private when the access specifier is absent. So, it can't access child class features (derived class features).

KUMAR said:   1 decade ago
Removing protected keyword means these variable private data type. So this variable use only base class, does not inherited child class.

Ravi said:   1 decade ago
Because on removing protected keyword int I will become public by default, and now for derived there would be two i variable.

Post your comments here:

Your comments will be displayed after verification.