2.5. Konstruktorlar.
Oldingi ko’rilgan barcha masalalarda bir konstruktorli sinflarni ko’rildi. Konstruktorlar ata amaliy dasturlarni yaratish jarayonini soddalashtirish va kod samaradorligini oshirish uchun zarurdir. Ushbu bo’limda biz konsturktor ulardan foidalanishni ko’rib chiqamiz.
Konstruktor – bu metoddir, obekt yaratilganda avtomatik ravishda bajariladi. Bundan tashqari, konstruktorlar quyudagicha ifodalanadi:
□konstruktor sinf nomi bilan bir xil bo’ladi;
□konstruktor qiymat qaytarmaydigan metoddir, shuning uchun konstruktorlar uchun identifikator turi ko’rsatilmaydi;
□konstruktor xuddi metodlardek argumentli va argumentsiz bo’lishi mumkin;
Bungacha, biz konstruktor yaratib ishlatmadik. Quyida xosil bo’lgan tushunchalarimiz yordamida sinf konstruktorlarini yaratib ko’ramiz:
class MyClass {
public int a;
public int b;
public MyClass() {
System.out.println(“Yangi obekt yaratildi.”);
a=5;
b=15;
show();
}
public void show(){
System.out.println(“Obekt maydonlari – a=”+a+”, b=”+b);
}
}
public class MainClass {
public static void main(String[] args) {
MyClass obj=new MyClass();
}
}
Ko’rib turganigizdek MyClass sinfi MyClass() konstruktoriga ega. U sinfdan obekt yaratilganda shu konstruktor avtomatik tarzda ishga tushadi. Yuqordagi misolda obekt yaratilganda nima hodisa bo’lishi belgilab beradi. Umuman olib qaraganda konstruktor sinfning dastlabki holatini belgilab beruvchi qurilmadir. Konstruktorni yaxshiroq tushunish uchun dasturlashga aloqasi bo’lmagan misollarni qaraymiz. Masalan bizda Mashina sinfi bo’lsin biz undan obekt yaratmoqchi bo’lsak. Demak shu mashinadan yaratilgan obekt dastlab qanday holatta bo’lsin yoqilgan yoki bo’lamsa biror amalbajarilgan va hakozo.Quyudagi misolda ham Point sinfidan obekt yaratilganda dastlab nuqtalarni belgilab beradi
class Point{
int x,y;
Point(int x,int y){
this.x=x;this.y=y;
}
Point(){
this(-10,45);
}
}
public class Main {
public static void main(String[] args) {
Point p1=new Point();
Point p2=new Point(77,88);
p1.x=11;
p1.y=22;
System.out.println(“p1.x=”+p1.x+” p1.y=”+p1.y);
System.out.println(“p2.x=”+p2.x+” p2.y=”+p2.y);
}
}
Ushbu dastur ikkita sinfdan tashkil topgan Point va asosiy sinf Main sinflaridan tashkil topgan. Etibor qilib qarasangiz asosiy sinfda Point orqali obekt yaratildi. Yaratilgan obektga 77 va 88 koordinatalari berib ketildi natijada p1 obektdagi x,y maydonlarning qiymati 77 va 88 qabul qildi.
Sinf va obyekt tushunchasini yaxshiroq tushunish uchun quyidagi misolga qaraymiz. Aylana sinfini yaratamiz:
Aylana
|
-radiosi: double =1.0
-rang : String =”red”
|
+Aylana()
+Aylana(r:double)
+getRadius():double
+getYuzasi():double
|
Aylana sinfini tuzulishini ko’rsatilgan tartibda yaratamiz. Sinf elementlari quyudagi elementlardan iboraat bo’ladi:
aylana sinfi ikkita o’zgaruvchidan iborat (maydondan): radios(o’zgaruvchi tipi double) va rang(o’zgaruvchi tipi String). Boshlangich qiymati radiosi=1.0, rang=red qabul qilingan.
Ikkita konstruktor argumentli va argumentsiz.
Ikkita public metod: getRadius() va getYuzasi (), bu metodlar qiymat qaytaruvchi radiosni va aylana yuzasini qiymatini qaytaradi.
Public class Circle {
private double radius;
private String color;
public Circle() {
radius = 1.0;
color = “red”;
}
public Circle(double r) {
radius = r;
color = “red”;
}
public double getRadius() {
return radius;
}
public double getArea() {
return radius*radius*Math.PI;
}
}
Bu asosiy sinf emas chunkiy uning asosiy metodi yoq. Shuning uchun boshqa sinfda bu sinfning obyektini yaratamiz.
Public class TestCircle {
public static void main(String[] args) {
Circle c1 = new Circle();
System.out.println(“aylananiny radiosi –“
+ c1.getRadius() + “ va yuzasi –“ + c1.getArea());
Circle c2 = new Circle(2.0);
System.out.println(“aylananiny radiosi –“
+ c2.getRadius() + “ va yuzasi –“ + c2.getArea());
}
}
Do'stlaringiz bilan baham: |