inherited nedir ? ne amaçla ve nasıl kullanılır ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
inherited nedir ? ne amaçla ve nasıl kullanılır ?
bu konuda yorum ve tecrübelerinizi bekliyorum
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Mesne programlamanın temelinde hazırlanmış özelliklerin o sınıftan türeyen diğer sınıflara da geçmesi yatar. Böyle bir özelikte değişiklik yapılması gerekiyorsa ve daha önceki yazılan kodların da aynen çalışmazı şartsa o zaman önceki yazılanları çalıştırmak için bu kod kullanılır. Mesela bir bileşen yazalım ve bu bileşen bir liste tusun. Bu liste bileşenle beraber oluşturulmalı ve yok edilmeli olarak tasarladık. O zaman kodlar aşağıdaki gibi olmalı. Gibi.
Kod: Tümünü seç
type
TOrnek=class(TComponent)
private
Liste:TStringList;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
.
.
.
.
constructor TOrnek.Create(AOwner:TComponent);override;
begin
inherited;//<-TComponent sınıfının Create olayını çalıştırır
//inherited Create(AOwner); -> da aynı işlevi yerine getirir
Liste:=TStringList.Create;//<-ek olarak listemizi tutacak nesne oluşur
end;
destructor TOrnek.Destroy;
begin
Liste.Free;//<-Oluşturduğumuz nesneyi yok ettik
inherited;//<- TComponent sınıfının Destroy olayını çalıştırır
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Bir A class'ın olsun ve bu class ta virtual olarak deklare edilmiş F fonksiyonun olsun.
Bu class tan türeyen B classı F'i override edip implement etsin. sonra C classı'da B'da türemiş bir class olsun ve F'i tekrar override edip implement etsin.
Açıklamalardanda anlayacağın gibi inherited, içine yazıldığı fonksiyonun, ata sınıfındaki implementasyonunu çağırır.
Bu class tan türeyen B classı F'i override edip implement etsin. sonra C classı'da B'da türemiş bir class olsun ve F'i tekrar override edip implement etsin.
Kod: Tümünü seç
Type
A = class;
Procedure F;Virtual;
end;
B = class(A)
Procedure F;Override;
end;
C = class(B)
Procedure F;Override;
end;
implementation
Procedure C.F
begin
inherited; --> Burda B.F çalışır.
end;
Procedure B.F
begin
inherited; --> Burda A.F çalışır.
end;
Procedure A.F
begin
end;
@SabanAkman hocam aynı anda yazmışız, ben göndermeden önce senin cevabın yoktu, çift dikiş oldu 
Delphi'de başka dillerde olmayan virtual constructer olanağı olduğu için ata sınıfların yaratılması için inheritedyazmak zorundayız. Onun için genellikle constructer larda denk geliyoruz buna ama tek işi bu değil tabiki.

Delphi'de başka dillerde olmayan virtual constructer olanağı olduğu için ata sınıfların yaratılması için inheritedyazmak zorundayız. Onun için genellikle constructer larda denk geliyoruz buna ama tek işi bu değil tabiki.