Forum: Ders Arası RSS
override ne işe yarar ?
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: override ne işe yarar ?
Override ile başka bir yerde daha karşılaşmıştım. Orada ezme gibi bir şey diyordu ama orada da tam olarak anlayamamıştım.

Kısaca override nedir nasıl kullanılır ?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Baştan yanlış okuduğum için "overload"un örneğini yazmışım. Boşa gitmesin: "overload", "aşırı yüklemek" anlamındadır. Bir fonksiyon isminin, farklı parametre türlerine göre farklı tanımlanmasını tarif eder. Şu programda int ve double için farklı olarak tanımlanmış iki tane foo fonksiyonu var:

import std.stdio;
 
void main()
{
    foo(42);
    foo(1.2);
}
 
void foo(int i)
{
    writeln("Ben int'leri yarıya bölerim: ", i / 2);
}
 
void foo(double d)
{
    writeln("Ben double'ları üçle çarparım: ", d * 3);
}

Şimdi override...

"override"ı karşılıkları arasındaki "hükümsüz kılmak" iyi açıklıyor: bir alt sınıfın, üst sınıf fonksiyonunu hükümsüz kılması, ve kendi tanımladığını kullandırtmasıdır:

import std.stdio;
 
class İşçi
{
    // Genel tanımı
    void çalış()
    {
        writeln("çalışıyorum");
    }
}
 
class Çimentoİşçisi: İşçi
{
    // Çimento işçisi için özel tanımı; üst sınıftakini
    // hükümsüz kılar
    override void çalış()
    {
        writeln("çimento döküyorum");
    }
}
 
void main()
{
    auto genelİşci = new İşçi;
    auto çimentoİşçisi = new Çimentoİşçisi;
 
    genelİşci.çalış();
    çimentoİşçisi.çalış();
}

Ali
Avatar
esatarslan52 (Moderatör) #3
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Override kullanmadan da bende sorunsuz çalıştı. Sitesinde incelediğimde hata verir falan diyordu override kullanmazsak.

Birde bunu mantık olarak c++ daki virtual fonksiyonlara benzetebilirmiyiz ?
erdem (Moderatör) #4
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
esatarslan52:
Birde bunu mantık olarak c++ daki virtual fonksiyonlara benzetebilirmiyiz ?

Evet aynısı türetilen sınıf taban sınıfın üzerine yazıyor..
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
esatarslan52, hangi sürümü kullanıyorsun? dmd 2.032 override kullanılmazsa hata verdi.

Ali
Avatar
esatarslan52 (Moderatör) #6
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
esatarslan52, hangi sürümü kullanıyorsun? dmd 2.032 override kullanılmazsa hata verdi.

Ali

2.028 deyim hala  :blush: . 2.032 yi yüklüyorum hemen.
Avatar
esatarslan52 (Moderatör) #7
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Sorun dmd nin sürümünden değilmiş Code::Blockstan kaynaklanıyor  :huh:

Konsoldan kendim derlediğimde vermesi gereken hatayı verdi.
Avatar
esatarslan52 (Moderatör) #8
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Çözüm
Settings->Compiler and Debugger -> Compiler settings->Compiler Flag bölümünden "enable warnigs -w" yi işaretli hale getiriyoruz.

[Resim: http://img143.imageshack.us/img143/7954/adszjo.jpg]

Bunu işaretlemeden de hata mesajları alıyordum neden şimdi böyle bişey yaptı anlamadım  :-/ .
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 08:11:50 (UTC -08:00)