Wednesday, July 30, 2014

Understanding Up Casting and Down Casting (C# reference)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Apps
{

    class Doctor1
    {
        protected string name, specialization;
        public Doctor1(string name, string specialization)
        {
            this.name = name;
            this.specialization = specialization;
        }
        public void Print()
        {
            Console.WriteLine(name);
            Console.WriteLine(specialization);
        }
    }
    class ResidentalDoctors1 : Doctor1
    {
        protected int salary;
        public ResidentalDoctors1(string name, string specialization, int salary)
            : base(name, specialization)
        {
            this.salary = salary;
        }
        public new void Print()
        {
            base.Print();
            Console.WriteLine(salary);
        }
        public int GetPay()
        {
            return salary;
        }
    }
    class Consultant1 : Doctor1
    {
        protected int fees, visitNum;
        public Consultant1(string name, string specialization, int fees, int visitNum)
            : base(name, specialization)
        {
            this.fees = fees;
            this.visitNum = visitNum;
        }
        public new void Print()
        {
            base.Print();
            Console.WriteLine(fees);
            Console.WriteLine(visitNum);
        }
        public int GetPay()
        {
            return fees * visitNum;
        }
    }
    class UnderstandingUpDownCasting
    {
        public static void Main()
        {
            //ResidentalDoctors rd = new ResidentalDoctors("Steve", "General", 100);
            //Consultant c = new Consultant("Chitti", "General", 300, 10);

            Doctor1 d = new Consultant1("Chitti", "General", 300, 10);  // Upcasting
            Consultant1 c;
            c = (Consultant1)d; //Downcasting


            //Console.WriteLine(d.GetPay());
            //Console.WriteLine(c.GetPay());
            //rd.Print();
           // c.Print();
        }
    }
}

No comments:

Post a Comment