Локални класове: класове в методи - 1

„Здрасти, Амиго!“

„Друга малка тема са местните класове .“

„Както видяхте, можете да създавате класове не само в отделни файлове, но и вътре в други класове. Но това не е всичко. Класовете могат да се създават и в рамките на методи. Тези класове се наричат ​​локални класове. Те работят като обикновени вътрешни класове, но те могат да се използват в рамките на методите, в които са декларирани."

"Погледнете екрана:"

Пример
class Car
{
 public ArrayListcreatePoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  class PoliceCar extends Car
  {
   int policeNumber;
   PoliceCar(int policeNumber)
  {
   this.policeNumber = policeNumber;
  }
 }

 for(int i = 0; i < count; i++)
     result.add(new PoliceCar(i));
  return result;
 }
}

"И защо имаме нужда от такива класове?"

„Поставянето на клас, с всичките му конструктори и методи, вътре в метод не прави много четим code, не мислите ли?“

"Точно така. Вие сте абсолютно прав."

"Можете също да използвате анонимни вътрешни класове вътре в методите. Но тези класове имат едно малко предимство и следователно се използват вътре в методите доста често."

„Клас, деклариран в метод, може да използва локалните променливи на този метод:“

class Car
{
 public ArrayListcreatePoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  for(int i = 0; i < count; i++)
  {
   final int number = i;
   result.add(new Car()
  {
   int policeNumber = number;
  });
 }
  return result;
 }
}

„Но има едно ограничение: променливите са „само за четене“ – те не могат да бъдат променяни.“

„Ето защо съществува това ограничение:“

„Класовете, декларирани в рамките на метод, имат достъп само до променливите на метода, които са декларирани с помощта на ключовата дума final. В примера по-горе можете да видите, че не мога веднага да присвоя стойността на i на policeNumber. Вместо това първо я записвам в крайно променливо число."

„Да можеш да използваш променливите на даден метод е супер готино. Надявам се да го оцениш правилно. Жалко е, че не можеш да променяш променливите.“

„Днес Ели ще ти обясни защо не можеш да ги смениш. Междувременно аз отивам да подремна за около час.“

„Лека нощ, Ким. Благодаря за интересния урок.“