KONSRUKTORLARDA THIS
Point sinfining keyingi varianti this va metodlar joylashishi qanday qilib bir
konstruktor boshqalari negizida qurilishini taqdim etadi.
class Point { int х, у;
57
Point(int х, int у) {
this.x = х; this.у = у;
}
Point()
{
х = -1;
у = -1;
} }
Bu misolda ikkinchi konsruktor oby’ekt inisializasiyasini yakunlash uchun birinchi
konstruktorga murojaat etadi.Nomlar joylashishida qo’llaniladigan metodlar
konstruktor bo’lishi shart emas.
Keyingi misolda Point sinfiga ikkita distance metodi qo’shiladi. Distance
funksiyasi ikkita nuqta orasidagi masofani qiymatini qaytaradi. Joylashtirilgan
metodlardan biriga x va y nuqtali koordinatalari parametr sifatida yuboriladi,
boshqasiga esa xuddi shu ma’lumot Point ob’ekti – parametri sifatida yuboriladi.
class Point { int х, у;
Point(int х, int у) {
this.x = х;
this. y = y; }
double distance(int х, int у) {
int dx = this.x - х;
int dy = this.у - у;
return Math.sqrt(dx*dx + dy*dy);
}
double distance(Point p) {
return distance(p.x, p.y);
} }
class PointDist {
58
public static void main(String args[]) {
Point p1 = new Point(0, 0);
Point p2 = new Point(30, 40);
Console.Write ("p1 = " + pi.x + ", " + p1.y);
Console.Write("p2 = " + p2.x + ", " + p2.y);
Console.Write ("p1.distance(p2) = " + p1.distance(p2));
Console.Write ("p1.distance(60, 80) = " + p1.distance(60, 80));
} }
E’tibor bering distance metodining ikkinchi formasida natija olish uchun uning
birinchi formasi talab etiladi.
Pastda shu ish programmasining natijasi keltirilgan.
р1 = 0, 0 р2 = 30, 40
р1.distance(p2) = 50.0
p1.distance(60, 80) = 100.0
Base
Point 3D sinfli misolda supersinf tarkibidagi kod takrorlanib keladi.Bir eslab
ko’ring ikkinchi konsruktorda this ni biz shu sinfning birinchi konsruktorini
chaqirish uchun qo’llaganmiz.Base kalit so’zi supersinf konsruktoriga murojaat
etishiga yo’l ochib beradi.
|