İçeriğe atla

Çokbiçimlilik

Vikipedi, özgür ansiklopedi
06.49, 17 Ekim 2020 tarihinde 85.96.215.64 (mesaj) tarafından oluşturulmuş 23816360 numaralı sürüm (→‎C++: sınıfa özel olarak yazılmış bir yazıyı ana fonksiyonda işaretçi kullanılarak erişim sağlanamayacağı için const string name değerini public olarak değiştirlmesi programın çalışmasını sağlayacaktır.)

Çok biçimlilik (İng. İngilizcepolymorphism), bir türün bir başka tür gibi davranabilme ve bu tür gibi kullanılabilme özelliği. Nesne yönelimli programlama dillerinde çok biçimlilik özelliği ise aynı temel sınıftan türetilmiş olan sınıflarda paylaşılan, başka bir ifadeyle aşırı yüklenen aynı metodun bu sınıflarda farklı şekillerde uyarlanabilmesidir. Nesnenin davranışı çalışma anında belirlendiği için programcılar, çok biçimlilik özelliği sayesinde nesnelerin türünü önceden bilmek zorunda kalmaz.

Örnekler

C++

 #include <iostream>
 #include <string>
 using namespace std;
 class Hayvan
 {
  public:
        const string name;
        Hayvan(const string& NAME) : name(NAME) {}
        virtual string konus() = 0;
 };

 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;
 }

Java

 interface IHayvan {
    String isimAl();
    String konus();
 }

 abstract class TemelHayvanSinifi implements IHayvan {
    private final String isim;
    protected TemelHayvanSinifi(final String ISIM) {
        isim = ISIM;
    }
    public String isimAl() {
        return isim;
    }
 }

 class Kedi extends TemelHayvanSinifi {
    public Kedi(final String ISIM) {
        super(ISIM);
    }
    public String konus() {
        return "Miyav!";
    }
 }

 class Kopek extends TemelHayvanSinifi {
    public Kopek(final String ISIM) {
        super(ISIM);
    }
    public String konus() {
        return "Hav! Hav!";
    }
 }

 public class Test {
    public static void main(final String[] ARGUMENTS) {
        final IHayvan[] hayvanlar = {
            new Kedi("Mirnav"),
            new Kedi("Kara kedi"),
            new Kopek("Karabas")
        };
        for (final IHayvan hayvan : hayvanlar) {
            System.out.println(hayvan.isimAl() + ": " + hayvan.konus());
        }
    }
 }

Kaynakça