Polymorphism is defined as one interface to control access to a general class of actions. There are two types of polymorphism one is compile time polymorphism and the other is run time polymorphism. Compile time polymorphism is functions and operators overloading. Runtime time polymorphism is done using inheritance and virtual functions.
Polymorphism means that functions assume different forms at different times. In case of compile time it is called function overloading. For example, a program can consist of two functions where one can perform integer addition and other can perform addition of floating point numbers but the name of the functions can be same such as add. The function add() is said to be overloaded. Two or more functions can have same name but their parameter list should be different either in terms of parameters or their data types. The functions which differ only in their return types cannot be overloaded. The compiler will select the right function depending on the type of parameters passed. In cases of classes constructors could be overloaded as there can be both initialized and uninitialized objects. Here is a program which illustrates the working of compile time function overloading and constructor overloading.
eg.
Polymorphism means that functions assume different forms at different times. In case of compile time it is called function overloading. For example, a program can consist of two functions where one can perform integer addition and other can perform addition of floating point numbers but the name of the functions can be same such as add. The function add() is said to be overloaded. Two or more functions can have same name but their parameter list should be different either in terms of parameters or their data types. The functions which differ only in their return types cannot be overloaded. The compiler will select the right function depending on the type of parameters passed. In cases of classes constructors could be overloaded as there can be both initialized and uninitialized objects. Here is a program which illustrates the working of compile time function overloading and constructor overloading.
eg.
namespace CommonClasses
{
public interface IAnimal
{
string Name { get; }
string Talk();
}
}
<i>// Assembly: Animals</i>
using System;
using CommonClasses;
namespace Animals
{
public abstract class AnimalBase
{
public string Name { get; private set; }
protected AnimalBase(string name) {
Name = name;
}
}
public class Cat : AnimalBase, IAnimal
{
public Cat(string name) : base(name) {
}
public string Talk() {
return "Meowww!";
}
}
public class Dog : AnimalBase, IAnimal
{
public Dog(string name) : base(name) {
}
public string Talk() {
return "Arf! Arf!";
}
}
}
<i>// Assembly: Program</i>
<i>// References and Uses Assemblies: Common Classes, Animals</i>
using System;
using System.Collections.Generic;
using Animals;
using CommonClasses;
namespace Program
{
public class TestAnimals
{
<i>// prints the following:</i>
<i>// Missy: Meowww!</i>
<i>// Mr. Bojangles: Meowww!</i>
<i>// Lassie: Arf! Arf!</i>
<i>//</i>
public static void Main(string[] args)
{
var animals = new List<IAnimal>() {
new Cat("Missy"),
new Cat("Mr. Bojangles"),
new Dog("Lassie")
};
foreach (var animal in animals) {
Console.WriteLine(animal.Name + ": " + animal.Talk());
}
}
}
}
0 comments:
Post a Comment