Temel Sınıfın Yapılandırıcılarını Çağırmak 1 [5]

Türetilmiş bir sınıf kendi temel sınıfı içinde tanımlanmış bir yapılandırıcıyı çağırabilir. Bunun
için, türetilmiş sınıfın yapılandırıcı deklarasyonunun genişletilmiş bir şekli base anahtar kelimesi kullanılmalıdır. Bu genişletilmiş deklarasyonun genel yapısı aşağıdaki gibidir:

türetilmiş yapılandırıcı (parametre-listesi) : base(arg-listesi) {
// yapılandırıcının gövdesi
}

Burada arg-listesi, temel sınıf içindeki yapılandırıcı tarafından ihtiyaç duyulan herhangi bir argümanı belirtmektedir.
Base'in kullanımı aşağıdaki örnekte ele alın. TwoDShape'de bu kez widrh ve height özelliklerine ilk değer atayan bir yapılandırıcı tanımlanmaktadır.

// TwoDShape'e yapilandiricilar ekle.
using System;
// Iki boyutlu nesneler icin bir sinif.
class TwoDShape {
double pri_width; // private
double pri_height; // private
// TwoDShape icin yapilandirici.
public TwoDShape(double w, double h) {
width=w;
height=h;
}
// width ve height icin ozellikler.
public double width {
get { return pri_width; }
set { pri_width=value; }
}
public double height {
get { return pri_height; }
set { pri_height=value; }
}
public void showDim() {
Console.WriteLine("Width and height are " + width + " and " + height);
}
}

// Ucgenler icin TwoDShape'ten turetilen bir sinif.
class Triangle : TwoDShape {
string style; // ozel
// Temel sinif yapilandiricisi cagir.
public Triangle(string s, double w, double h) : base(w, h) {
style=s;
}
// Ucgenin alanini dondur.
public double area() {
return width*height/2;
}
// Ucgenin seklini goster.
public void showStyle() {
Console.WriteLine("Triangle is " + style);
}
}

class Shapes4 {
public static void Main() {
Triangle t1=new Triangle("isosceles", 4.0, 4.0);
Triangle t2=new Triangle("right", 8.0, 12.0);
Console.WriteLine("Info for t1: ");
t1.showStyle();
t1.showDim();
Console.WriteLine("Area is " + t1.area());
Console.WriteLine();
Console.WriteLine("Info for t2: ");
t2.showStyle();
t2.showDim();
Console.WriteLine("Area is " + t2.area());
}
}


Bu örnekte Triangle(), base'i w ve h parametreleriyle çağırır. Bu, TwoDShape() yapılandırıcısının çağrılmasına neden olur. TwoDShape() yapılandırıcısı bu parametre değerlerini kullanarak width ve height'a ilk değer atar. Triangle artık bu değerlere ilk değer atamaz. Triangle yanlızca kendisine ait değer olan style'a ilk değer atar. Bu sayede, TwoDShape kendi alt nesnesini istediği gibi yapılandırmakta özgür kalır. Üstelik, TwoDShape, mevcut türetilmiş sınıflardan hangilerinin bilgisi olmadığı hakkında da bir işlevsellik ekleyebilir; böylece, mevcut kodun çökmesi önlenmiş olur.

Kaynak: Herbert Schildth
Herkes için C#

1 yorum:

Adsız dedi ki...

saol

Yorum Gönder