Çok biçimlilik
Vikipedi, özgür ansiklopedi
Çok biçimlilik (İng., polymorphism) bir A türünün bir başka tür olan B gibi davranabilme ve bu tür gibi kullanılabilme özelliğidir. Nesne yönelimli programlama dillerinde çok biçimlilik özelliği ise aynı temel sınıfdan türetilmiş olan sınıflarda paylaşılan aynı metodun bu sınıflarda farklı şekillerde uyarlanabilmesidir. Nesnenin davranışı calışma anında belirlendiği için programcılar çok biçimlilik özelliği sayesinde nesnelerin türünü önceden bilmek zorunda kalmazlar.
[değiştir] Örnekler
[değiştir] C++
#include <iostream>
#include <string>
using namespace std;
class Hayvan
{
public:
Hayvan(const string& name) : name(name) {}
virtual string konus() = 0;
const string name;
};
class Kedi: public Hayvan
{
public:
Kedi(const string& name) : Hayvan(name) {}
virtual string konus() { return "Miyav!"; }
};
class Kopek: public Hayvan
{
public:
Kopek(const string& name) : Hayvan(name) {}
virtual string konus() { return "Hav! Hav!"; }
};
int main()
{
Hayvan* hayvanlar[] =
{
new Kedi("Mirnav"),
new Kedi("Kotu kedi"),
new Kopek("Karabas")
};
for(int i = 0; i < 3; i++)
{
cout << hayvanlar[i]->name << ": " << hayvanlar[i]->konus() << endl;
delete hayvanlar[i];
}
return 0;
}
[değiştir] Java
interface Hayvan
{
String isimAl();
String konus();
}
abstract class TemelHayvanSinifi implements Hayvan
{
private final String isim;
protected TemelHayvanSinifi (String name)
{
this.isim = isim;
}
public String isimAl()
{
return isim;
}
}
class Kedi extends TemelHayvanSinifi
{
public Kedi(String isim)
{
super(isim);
}
public String konus()
{
return "Miyav!";
}
}
class Kopek extends TemelHayvanSinifi
{
public Kopek(String isim)
{
super(isim);
}
public String konus()
{
return "Hav! Hav!";
}
}
public class Test
{
public static void main(String[] args)
{
Hayvan[] hayvanlar=
{
new Kedi("Mirnav"),
new Kedi("Kotu Kedi"),
new Kopek("Karabas")
};
for (Hayvana : hayvanlar)
{
System.out.println(a.isimAl() + ": " + a.konus());
}
}
}
