Maha

Maha

  • NA
  • 0
  • 326.1k

Polymorphic and non Polymorphic

Oct 28 2012 9:11 AM
This example is given in the following website http://www.c-sharpcorner.com/Forums/Thread/156771/. It is said that "override is polymorphic but new is not".

When we use new keyword the output is:
/*
Student Megan has 15 credits
Student Luke has 15 credits
Student
*/

When we use override keyword the output is:
/*
Student Megan has 15 credits
Student Luke has 15 credits
Student Megan has 15 credits
*/

The word polymorphism means "many forms". Here new and override taking many forms. How can be said that override is polymorphic but new is not. Problem is highlighted. 

using System;

class DemoStudents4
{
public static void Main()
{
Student payingStudent = new Student();
ScholarshipStudent freeStudent = new ScholarshipStudent();

payingStudent.SetName("Megan");
payingStudent.SetCredits(15);

freeStudent.SetName("Luke");
freeStudent.SetCredits(15);

object obj = payingStudent;

Console.WriteLine(payingStudent.ToString());
Console.WriteLine(freeStudent.ToString());
Console.WriteLine(obj.ToString());

Console.ReadKey();
}
}

class Student
{
private string name;
protected int credits;

public void SetName(string name)
{
this.name = name;
}
public void SetCredits(int creditHours)//SetCredits in the child class as well
{
credits = creditHours;
}
public new/override string ToString() //Tostring() overrides the Object class version.
{
string stuString = "Student " + name + " has " + credits + " credits";
return stuString;
}
}

class ScholarshipStudent : Student
{
new public void SetCredits(int creditHours)
{
credits = creditHours;
}
}


Answers (4)