Temel sınıf tarafından tanımlanan herhangi bir yapılandırıcı base tarafından çağrılabilir. Çalıştırılacak olan yapılandırıcı, argümanları eşleyen yapılandırıcı olacaktır. Örneğin, işte size TwoDShape ve Triangle'in genişletilmiş versiyonu. Aşağıdaki örnekte TwoDShape ve Triangle, hem varsayılan hem de tek atgümanlı yapılandırıcı içerirler.
// TwoDShape'e biraz daha yapılandırıcı eklemek.
using System;
class TwoDShape {
double pri_width; // private
double pri_height; // private
// varsayilan yapılandırıcı
public TwoDShape() {
width=height=0.0;
}
// TwoDShape icin yapilandirici.
public TwoDShape (double w, double h) {
width=w;
height=h;
}
// esit width ve height degerleri olan bir nesne yapilandir.
public TwoDShape (double x) {
width=height=x;
}
//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
/* varsayilan yapilandirici. bu, otomatik olarak TwoDShape'in
varsayılan yapilandiricisini cagirir. */
public Triangle() {
style="null";
}
// Uc arguman alan yapilandirici.
public Triangle(string s, double w, double h) : base (w,h) {
style=s;
}
// ikizkenar bir ucgen yapilandir.
public Triangle(double x) : base(x) {
style="isosceles";
}
// Ucgenin alanini dondur.
public double area() {
return width*height/2;
}
// Ucgenin seklini goster.
public void showStyle() {
Console.WriteLine("Triangle is " + style);
}
}
class Shapes5 {
public static void Main() {
Triangle t1=new Triangle();
Triangle t2=new Triangle("right", 8.0, 12.0);
Triangle t3=new Triangle(4.0);
t1=t2;
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());
Console.WriteLine();
Console.WriteLine("Info for t3: ");
t3.showStyle();
t3.showDim();
Console.WriteLine("Area is " + t3.area());
Console.WriteLine();
}
}
Verdiği çıktı aşağıdaki gibidir.
Info for t1:
Triangle is right
width and height are 8 and 12
Area is 48
Info for t2:
Triangle is right
width and height are 8 and 12
Area is 48
Info for t3:
Triangle is isosceles
width and height are 4 and 4
Area is 8
Base'in ardında yatan en önemli kavramları yeniden gözden geçirelim. Bir türerilmiş sınıf base kelimesi kullanılarak belirtilince, kendisinin doğrudan temel sınıfın yapılandırıcısını çağırıyordur. Bu, birden fazla seviyeye sahip hiyerarşiler için de geçerlidir. Temel sınıfın yapılandırıcısına argüman aktarmak için, bunları base'in argümanları olarak belirtmelisiniz. Eğer base kelimesi mevcut değilse, bu durumda base sınıfının varsayılan yapılandırıcısı otomatik olarak çağrılır.
Kaynak: Herbert Schildt
Herkes için C#
Hiç yorum yok:
Yorum Gönder