Konstruktorlar va vorislik.
Sinflar ierarxiyasi o’z konstruktorlari mavjud bo’ladi. Shu bilan birga ob’ektni bazaviy qismini baza sinf konstruktori tashkil qiladi, xosila qismini – xosila sinfi konstruktori tashkil qiladi. Chunki baza sinfi hosila sinf elementlariga kirish xuquqiga ega emas. Shuning uchun ularning konstruksiyalari alohida bo’lishi kerak.
Agar konstruktor faqat hosila sinfida aniqlansa, ob’ektni hosil bo’lish jarayoni juda sodda: hosila sinfi ob’ekti hosil bo’ladi xolos. Baza sinfiga bog’liq bo’lgan ob’ektni qismi esa konstruktori yordamida avtomatik hosil qilinadi. Masalan, konstruktorni aniqlashda Triangle sinfini qayta ishlangan talqinini ko’rib chiqamiz.
G’G’ Dobavlenie konstruktora v klass Triangle.
using System;
G’G’ Klass dvumerno’x ob’ektov. class TwoDShape {
double pri_width; G’G’ Zakro’to’y chlen.
double pri_height; G’G’ Zakro’to’y chlen.
G’G’ Svoystva width i height.
public double width {
get ( return pri_width; }
set ( pri_width - value; }
}
public double height {
get ( return pri_height; }
set ( pri_height q value; }
}
public void showDim() {
Console.WriteLine("Shirina i vo’sota ravno’ " Q
width Q " i " Q height);
}
}
G’G’ Klass treugolnikov - proizvodno’y ot klassa TwoDShape.
class Triangle : TwoDShape {
string style; G’G’ Zakro’to’y chlen.
G’G’ Konstruktor.
public Triangle(string s, double w, double h) {
width q w; G’G’ Initsializiruet chlen bazovogo klassa.
height q h; G’G’ Initsializiruet chlen bazovogo klassa.
style q s; G’G’ Initsializiruet chlen svoego klassa.
}
G’G’ Metod vozvrahaet znachenie plohadi treugolnika.
public double area ( ) { return width * height G’ 2;
}
G’G’ Otobrajaem tip treugolnika.
public void showStyle ( ) {
Console.WriteLine ("Treugolnik " Q style);
}
}
class Shapes3 {
public static void Main ( ) {
Triangle t1 q new Triangle ("ravnobedrenno’y",
4.0, 4.0);
Triangle t2 q new Triangle("pryamougolno’y",
8.0, 12.0);
Console. WriteLine ("Informatsiya o t1: ");
t1.showStyle ( );
t1.showDim ( ) ;
Console.WriteLine ("Plohad ravna " Q t1.area ( ) );
Console.WriteLine ();
Console.WriteLine("Informatsiya o t2: ");
t2.showStyle ( );
t2.showDim();
Console.WriteLine ("Plohad ravna " Q t2.area ( ));
}
}
Agarda konstruktorlar baza va xosila sinflarida tengdan belgilangan bo’lsa, ob’ektni tashkil etish jarayoni birmuncha murakkabroq kechadi. Bu holda S# base kalit so’zidan foydalanish kerak bo’ladi.
Do'stlaringiz bilan baham: |