Java dasturlash tilida eng oddiy dastur


Java tilida nasl tushunchasi



Download 167,47 Kb.
bet22/26
Sana25.02.2022
Hajmi167,47 Kb.
#463371
1   ...   18   19   20   21   22   23   24   25   26
Bog'liq
1 dedlayn Java dasturlash tilida eng oddiy dastur

2.10. Java tilida nasl tushunchasi.

Java dasturlash tilining amaliy natija beradigan juda katta imkoniyat mavjud. Bu imkoniyat merosxo’rlik deyiladi. Yuqori savyada yozilgan sinfdan siz xoxlagancha nasl olib uni boyitib o’zingizni yangi sinfingizni yaratishingiz mumkin. Merosxorlik bu mexanizimdir. Meros olinganda faqat ruxsat etilgan meros merosxo’rga o’tkaziladi va u sinfga bo’y sunish tartibida meros olivchi sinfning barch imkoniyatidan foidalanadi. Java tilida meros olingan sinf superclass deyiladi. Meros olish extends kalit so’zi orqali amalga oshiriladi.Masalan bizda A sinfi bo’lsin:

class C{
private int x;


public void setX(int x){
this.x=x;
}
public int getX(){
return this.x;
}
}
Endi yangi D sinfini yaratamiz lekin C sinfning barcha imkoniyati D sinfida bo’lishini xoxlaymiz. Buning uchun sinfni quyidagicha yaratamiz:

class D extends C{


//C sinfning ruxsat qilingan imkoniyati bizda bor;
}

D sinfidan foidlanganimizda hammasini tushinib olasiz.


public class MainClass {


public static void main(String[] args) {
D d=new D();
d.setX(5);
System.out.println(d.getX());
}
}

Asosiy sinfimizda D sinf orqali obekt yaratib oldik. Ko’rib turganigizdek biz C sinfida yozib qo’yilgan metodlardan foidalib turibmiz chunkiy biz C sinfini superclass qilib elon qildik. Shu joyda biz private bilan protected ning farqini tushinib olamiz. Agar biz private ko’rinishida metod va maydonlarni elon qilsak bu metod va maydonlar yopiq ko’rinishga ega bo’ladi va merosga ham o’tmaydi bulardan faqat shu sinf ichida foidalana olamiz.


class C{
private int x;


private void setX(int x){
this.x=x;
}
private int getX(){
return this.x;
}
}
class D extends C{
//C sinfning imkoniyati bizda yoq;
}
public class MainClass {
public static void main(String[] args) {
D d=new D();
d.setX(5); //bu xato(chunkiy naslga o’tmagan)
C c=new C();
c.setX(15); //bu xato(chunki metod yopiq)
}
}

Metod va maydonlar protected bo’lsa huddi private kabi xususiyatga ega bo’ladi farqi naslga meros bo’lib o’tadi.


class C{
private int x;


protected void setX(int x){
this.x=x;
}
protected int getX(){
return this.x;
}
}
class D extends C{
//C sinfning ruxsat qilingan imkoniyati bizda bor;
}
public class MainClass {
public static void main(String[] args) {
D d=new D();
d.setX(5); //bu to’g’ri(chunkiy naslda bor)
System.out.println(d.getX());
}
}

Java tilida nasl tushunchasini tushinish uchun murakkabiroq sinflarni ko’rib chiqamiz. Bizda Point sinfi mavjud bo’lsin:


class Point{
int x,y;
Point(int x,int y){
this.x=x;this.y=y;
}
Point(){
this(-10,45);
}
double destenc(int x,int y){
int dx=this.x-x;
int dy=this.x-y;
return Math.sqrt(dx*dx+dy*dy);
}
double destenc(Point p){
return destenc(p.x,p.y);
}

}


Point sinfi tekislikdagi nuqtaning koordinatalarini anglatadi. Point sinfi bir necha imkoniyatlarga ega.Ko’rib turganimizdek destanc metodi ixtiyoriy nuqtagacha bo’lgan masofani aniqlab beradi. Endi shu Point sinfi orqali Point3D sinfini yaratamiz:
class Point3D extends Point{
int z;
Point3D(int x,int y,int z){
super(x,y);
this.z=z;
}
Point3D(){
this(0,0,0);
}
double desc(int x,int y,int z){
int dx=this.x-x;
int dy=this.y-y;
int dz=this.z-z;
return Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2)+Math.pow(dz,2));
}
double desc(Point3D p){
return desc(p.x,p.y,p.z);
}
}
Biz juda osonlik bilan Point sinfi orqali Point3D sinfini yarata oldik. Unga faqat bitta koordinata kirittik xolos. Bu yerda faqat bitta bizga tanish bo’lmagan tushuncha mavjud bo’ldi bu super(x,y) metodidir. Buning manosi superclass ning konstruktori kabi deganidir. Xuddikiy superclass konstruktorigamurojatni anglatadi. Quyida biz ushbu singladan foidalanishni ko’rsatib beramiz:
public class Main {
public static void main(String[] args) {
Point p1=new Point();
Point p2=new Point(77,88);
Point p3=new Point();
p1.x=11;
p1.y=22;
System.out.println(p1.x+" "+p1.y);
System.out.println(p2.x+" "+p2.y);
System.out.println(p3.x+" "+p3.y);
System.out.println(p2.destenc(p1.x, p1.y));
System.out.println(p2.destenc(p1));
Point3D p4=new Point3D();
Point3D p5=new Point3D(25,37,44);
System.out.println("p4.x="+p4.x+" p4.y="+p4.y+" p4.z="+p4.z);
System.out.println("p5.x="+p5.x+" p5.y="+p5.y+" p5.z="+p5.z);
System.out.println(p4.desc(p5));
}

}
Ko’rib turganimizdek p1,p2,p3 obektlar Point tipidadir, p4,p5 obektlar esa Point3D tipiga tegishlidir.



Download 167,47 Kb.

Do'stlaringiz bilan baham:
1   ...   18   19   20   21   22   23   24   25   26




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish