Yerel sınıflar: yöntemlerin içindeki sınıflar - 1

"Merhaba, Amigo!"

"Bir başka küçük konu da yerel sınıflar ."

"Gördüğünüz gibi sadece ayrı dosyalarda değil, başka sınıfların içinde de sınıflar oluşturabilirsiniz. Ama hepsi bu kadar değil. Yöntemler içinde de sınıflar oluşturulabilir. Bu sınıflara yerel sınıflar denir. Sıradan iç sınıflar gibi çalışırlar, ancak ilan edildikleri metotlar dahilinde kullanılabilirler."

"Ekrana bak:"

Örnek
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;
 }
}

"Peki neden böyle derslere ihtiyacımız var?"

"Tüm oluşturucuları ve yöntemleriyle birlikte bir sınıfı bir yöntemin içine koymak kodu çok okunabilir yapmaz, sence de öyle değil mi?"

"Kesinlikle. Kesinlikle haklısın."

"Ayrıca yöntemlerin içinde anonim iç sınıfları da kullanabilirsiniz. Ancak bu sınıfların küçük bir avantajı vardır ve sonuç olarak, yöntemlerin içinde oldukça sık kullanılırlar."

"Bir yöntem içinde bildirilen bir sınıf, o yöntemin yerel değişkenlerini kullanabilir:"

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;
 }
}

"Ancak bir sınırlama var: değişkenler «salt okunurdur»—değiştirilemezler.

"İşte bu kısıtlamanın var olmasının nedeni:"

"Bir yöntem içinde bildirilen sınıflar, bir yöntemin yalnızca final anahtar sözcüğü kullanılarak bildirilen değişkenlerine erişebilir. Yukarıdaki örnekte, i değerini hemen polisNumber'a atayamadığımı görebilirsiniz. Bunun yerine önce onu kaydediyorum. son değişken numarası."

"Bir yöntemin değişkenlerini kullanabilmek süper harika. Umarım bunu gerektiği gibi takdir edersin. Yine de değişkenleri değiştirememen çok kötü."

"Ellie bugün sana onları neden değiştiremeyeceğini açıklayacak. Bu arada ben gidip bir saat kadar kestireceğim."

"İyi geceler Kim. İlginç ders için teşekkürler."