Nesne Yönelimli Programlama
Kalıtım ve Arayüzler
Kalıtım, arayüz ve OOP derinlik sınırları.
Kalıtım, arayüz ve OOP derinlik sınırları.
Referans
Bu sayfa 5 katalog öğesini kapsar. Aşağıdaki maddeler language-spec, örnekler ve katalog alanlarından üretilmiştir.
'arayüz'
Nedir?
Arayüz sözleşme. Çoklu arayüz uygulanabilir; arayüz örneği oluşturulamaz; üyeler uygulanmalı.
Sözdizimi
arayüz Uçabilir{ fonksiyon uç()}Basit örnek
arayüz Uçabilir { fonksiyon uç() }Dikkat edilmesi gerekenler
- Eksik uygulama US0825.
Kalıtım
Nedir?
En çok bir sınıf tabanı; birden çok arayüz. mühürlü sınıf devralınamaz.
Sözdizimi
sınıf Köpek : Hayvan { }sınıf Kuş : Hayvan, Uçabilir { }Basit örnek
sınıf Köpek : Hayvan { }k: Köpek = @Köpek()syaz k.tür()Çıktı
Hayvan
Dikkat edilmesi gerekenler
- Çoklu sınıf tabanı US0824; döngü US0840; mühürlü taban US0841.
OOP değiştiriciler
Nedir?
Sınıf ve üye değiştiricileri: soyut, statik, sanal, yerinegeç, mühürlü. yerinegeç sanal/soyut veya arayüz üyesinin yerine geçer; yanlış kullanım US0826/US0827 üretebilir.
Ne zaman kullanılır?
Kalıtım, soyut sözleşme veya statik üye tanımlarken kullanın.
Sözdizimi
genel sanal fonksiyon ses() { }genel yerinegeç fonksiyon ses() { temel.ses() }Basit örnek
genel sanal fonksiyon ses() { }genel yerinegeç fonksiyon ses() { temel.ses() }Dikkat edilmesi gerekenler
- US0826/US0827/US0828/US1510.
Derin OOP / sanal tablo
Nedir?
Sanal gönderim: sanal üye çalışma zamanı tipine göre çözülür; yerinegeç onu ezer. temel.üye() sanal yeniden giriş yapmaz — bağlanmış taban gövdesini çağırır. Soyut sınıf örneği @ ile oluşturulamaz (bağlama + çalışma zamanı US1510).
Ne zaman kullanılır?
Taban referansından türetilmiş davranışı çağırmak veya olay işleyicisinde sanal metot kullanmak gerektiğinde.
Parametreler ve dönüş
Tabanda genel sanal fonksiyon …; türetilmişte genel yerinegeç fonksiyon …. Alıcı taban tipinde olsa bile örnek türetilmişse override çalışır. Derleyici yüzeyi Class/interface/override için PARTIAL; olay + sanal gönderim parity’si UsEmitVTable ile doğrulanmış alt kümede SUPPORTED.
Kullanım
sınıf Hayvan{ genel sanal fonksiyon ses() { syaz "Hayvan" }}sınıf Köpek : Hayvan{ genel yerinegeç fonksiyon ses() { temel.ses() syaz "Köpek" }}k: Köpek = @Köpek()k.ses()hayvan: Hayvan = khayvan.ses()Basit örnek
sınıf Hayvan{ genel sanal fonksiyon ses() { syaz "Hayvan" }}sınıf Köpek : Hayvan{ genel yerinegeç fonksiyon ses() { temel.ses() syaz "Köpek" }}k: Köpek = @Köpek()k.ses()hayvan: Hayvan = khayvan.ses()Çıktı
Hayvan Köpek Hayvan Köpek
Geçersiz örnek
soyut sınıf Şekil { }değer: Şekil = @Şekil()US0825 AbstractCreation (bağlama); çalışma zamanında soyut ayırma US1510.
Dikkat edilmesi gerekenler
- Yanlış
yerinegeç/ sanal eşleşmesi US0826. - Parametreli taban
oluşturvarkentemel(...)sözdizimi yok → US0837. us derleiçin derin sınıf/arayüz zinciri production-supported değildir (PARTIAL).
İlgili konular
Sync instance methods
Nedir?
Sınıf içi sıradan fonksiyon eşzamanlı örnek metodudur. Ayrı sync anahtar kelimesi yok. Emit’te CLR imzası (UsValue self, …) (uygulama detayı).
Basit örnek
k: Köpek = @Köpek()syaz k.adGetir()Çıktı
Köpek
Dikkat edilmesi gerekenler
- Dil yüzeyi
fonksiyon+ sınıf üyesi;afonksiyondeğil.