Keltirish faqat sinf ierarxiyasi ichida (tepadan pastga qarab) bajarilishi mumkin
Agar o’zgaruvchi sinf osti ob’ektiga ko’rsatmasa uni sinf ostiga keltirish mumkin
60
Keltirish quyidagicha amalga oshiriladi
if (B instanceof A) {
A boss = (A) B;}
Ob’ekt o’zgaruvchilari ustida keltirish operatsiyasini iloji bo’lsa ishlatmaslik
kerak. Ob’ektlilik buziladi
Uchburchak sinfiga misol:
using
System;
using
System.Text;
namespace
sinf1
{
public
class
uchburchak
{
int
a;
int
b;
int
c;
public
uchburchak(
int
x,
int
y,
int
z)
{ a = x; b = y; c = z; }
public
int
perimetr() {
return
a + b + c; }
public
int
getA() {
return
a; }
public
int
getB() {
return
b; }
public
void
setA(
int
x) { a = x; }
}
public
class
tuchburchak
:
uchburchak
{
//public tuchburchak(int x, int y, int z)
{ a = x; b = y; c = z; }
public
tuchburchak(
int
x,
int
y,
int
z):
base
(x,y,z) {}
public
double
yuza() {
return
getA()*getB()/2.0; }
}
class
Program
61
{
static
void
Main(
string
[] args)
{
uchburchak
U =
new
uchburchak
(3, 4,5);
tuchburchak
T=
new
tuchburchak
(3,4,5);
int
x = U.perimetr();
Console
.WriteLine(x);
//Console.WriteLine(U.getA());
// U.setA(7);
//Console.WriteLine(U.getA());
Console
.WriteLine(T.yuza());
Console
.ReadKey();
}
}
}
Sinf osti
[] class : {
}
Supersinf barcha maydonlari va metodlari meros qilib sinf ostiga beriladi. Sinf osti
qo’shimcha maydon va metodlar yasashi va meros qilib olingan metodni qayta
aniqlashi mumkin.
Agar sinf osti metodi qayta aniqlangan supersinf metodi bo’lsa, supersinfning
metodiga “super” old qo’shimcha orqali murojaat qilinadi
Supersinf konstruktoriga super(…) ko’rinishida murojaat qilinadi
Agar sinf osti konstruktoridan supersinf konstruktoriga murojaat qilinmasa
supersinfning parametirsiz konstruktori chaqiriladi. Agar parametrsiz konstruktor
aniqlanmagan bo’lsa kompilyator xato haqida xabar beradi
(odam, ishchi,talaba misolida)
62
2.3. Abstrakt sinflar. Polimorfizm
Abstrakt sinflar
Ildiz sinf ko’pincha konkret ob’ektlar yasash uchun emas, balki boshqa sinf ostilar
yasash asosi sifatida yasaladi.
Ba’zi metodlar ildiz sinfda hali aniq algoritmga ega bo’lmaydi agar sinf ostilar
ularni har xil aniqlashi ko’zda tutilgan bo’lsa.Bunday hollarda bo’sh metod
yasaladi (zaglushka o’rniga) va u abstract deb e’lon qilinadi. Bunday sinf ob’ektini
yasash munkin emas, u faqat sinf osti yasash uchun yasalgan.
abstract metodlar “abstract” modifikatori bilan e’lon qilinadi va ularning tanasi
mavjud bo’lmaydi. Abstract metodga ega sinf ham “abstract” modifikatoriga ega
bo’lishi kerak.
Abstract sinf abstract bo’lmagan metodlarga ham ega bolishi mumkin
Sinflar ierarxiyasidan yuqoriga ko’tarilib borgan sari sinf abstraktliligi oshib boradi
Himoyalangan ruxsat
Modifikator protected (maydon va metod uchun)
Sinf ostilar va shu sinf ostilar turgan paketlardagi sinflar uchun ruxsat
beriladi
Asosan metodlar uchun, maydonlarga ham qo’yish mumkin, lekin tavsiya
etilmaydi.
Protected modifikatori C++ dagi protected modifikatoridan farq qiladi. C++
da faqat sinf ostilargagina ruxsat beriladi
Ruxsat turlari
private – ko’rinish sohasi faqat shu sinf
public - ko’rinish sohasi chegaralanmagan
protected - ko’rinish sohasi paket va sinf ostilar
ko’rsatilmagan - ko’rinish sohasi joriy paket
Do'stlaringiz bilan baham: