JavaRush /Курсы /All lectures for GE purposes /ცვლადების ინიციალიზაციის თანმიმდევრობა

ცვლადების ინიციალიზაციის თანმიმდევრობა

All lectures for GE purposes
1 уровень , 175 лекция
Открыта

— გამარჯობა, ამიგო! ბილააბო დღეს ისაუბრებს ცვლადების ინიციალიზაციის თანმიმდევრობაზე.

წარმოიდგინე, რომ ხედავ კოდს. რა მნიშვნელობები მიიღებენ ცვლადები?

კოდი
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
კოდი
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public int getSum()
 {
  return a + b + c;
 }
}

— და ასე შეიძლება?

— რა თქმა უნდა. კლასის მეთოდებსა და ველებს შორის დეკლარაციის თანმიმდევრობა არ არის მნიშვნელოვანი.

კლასი ზემოდან ქვემოთ იტვირთება, ამიტომ მნიშვნელოვანია, რომ კლასის ველმა მიმართოს მხოლოდ უკვე ჩატვირთულ სხვა ველებს. მაგალითში ველი b შეუძლია მიმართოს a-ს, მაგრამ არაფერი იცის c-ის შესახებ.

— და რაც მოხდება?

— ცვლადების შექმნისას ისინი ღებულობენ ნაგულისხმევ მნიშვნელობებს.

კოდი სრულდება სინამდვილეში
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat() { super();

 a = 5;
 b = a + 1; //5+1 = 6
 c = a * b; //5*6 = 30
 }
}
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public int getSum()
 {
  return a + b + c;
 }
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat() { super();

  a = getSum(); //(a+b+c)=0
  b = getSum() - a; //(a+b+c)-a=b=0
  c = getSum() - a - b; //(a+b+c)-a-b=c=0
 }

 public int getSum()
 {
  return a + b + c;
 }
}

— უაუ! აღმოჩნდა, რომ ეს ასე მარტივია. მადლობა ბილააბო, ნამდვილი მეგობარი ხარ!

— ურა! ბილააბოს მეგობარი შეემატა!

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ