using System;
namespace CSharpDemo
{
public class A
{
public void print()
{
Console.Write("A \n");
}
// private method decalaration
private void securePrint(){
Console.Write("secure print A \n");
}
public void allowPublicAccessToSecurePrint(){
this.securePrint();
}
}
public class B : A
{
public void print()
{
Console.Write("B \n");
}
// base keyword will allow to access parent class's public methods
public void printFromA(){
base.print();
//// parent's private methods are not accessible in child
//// base.securePrint();
}
}
class Program
{
static void Main(string[] args)
{
A aa = new A();
aa.print(); // -------------------------------------------- output: A
//// private member not accessible
//// aa.securePrint();
aa.allowPublicAccessToSecurePrint(); //-------------------- output: secure print A
A ab = new B();
ab.print(); // -------------------------------------------- output: A
ab.allowPublicAccessToSecurePrint(); //-------------------- output: secure print A
//// below code will give you compile time error
//// An explicit conversion exists (are you missing a cast?)
//// B ba = new A();
//// ba.print();
B bb = new B();
bb.print(); // -------------------------------------------- output: B
bb.printFromA(); // --------------------------------------- output: A
bb.allowPublicAccessToSecurePrint(); //-------------------- output: secure print A
}
}
}