Menu
Coddy logo textTech

Private Metotlar

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 19 / 56.

JavaScript sınıflarındaki özel metotlar (private methods), uygulama detaylarını gizlemenize ve dahili işlevselliğe harici erişimi engellemenize olanak tanır.

ES2022'den itibaren, özel metotlar # öneki kullanılarak tanımlanabilir:

class Counter {
  #count = 0;
  
  // Özel bir metot oluşturun
  #increment() {
    this.#count++;
  }
  
  // Özel metodu kullanan genel metot
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Bir Counter örneği oluşturalım:

const myCounter = new Counter();

Public metodu çağırabiliriz:

console.log(myCounter.addOne()); // Çıktı: 1

Ancak private metoda doğrudan erişmeye çalışmak bir hataya neden olacaktır:

myCounter.#increment(); // Hata: Private metoda sınıf dışından erişilemez

Özel metotlar, dahili uygulama detaylarını dış dünyadan gizli tutarak kapsüllemenin (encapsulation) korunmasına yardımcı olur.

challenge icon

Görev

Mesajları saklayan bir MessageBox sınıfı size verilmiştir. Göreviniz, mesajları doğrulayan #isValidMessage(text) adında özel bir metot eklemektir. Bu metot şunları yapmalıdır:

  • Metin boş değilse ve 100 karakterden azsa true döndürmelidir
  • Aksi takdirde false döndürmelidir

Kopya kağıdı

JavaScript sınıflarındaki özel (private) metotlar # öneki kullanılarak tanımlanır ve bunlara yalnızca sınıf içerisinden erişilebilir:

class Counter {
  #count = 0;
  
  // Özel metot
  #increment() {
    this.#count++;
  }
  
  // Özel metodu kullanan genel (public) metot
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Özel metotlara sınıf dışından erişilemez:

const myCounter = new Counter();
myCounter.addOne(); // Çalışır
myCounter.#increment(); // Hata: Özel metoda erişilemez

Özel metotlar, dahili uygulama detaylarını gizleyerek kapsüllemenin (encapsulation) korunmasına yardımcı olur.

Kendin dene

import { MessageBox } from './messageBox.js';

// Mesaj kutusu kullanımı
const box = new MessageBox();

console.log(box.setMessage("Hello"));    // "Message set!" (#isValidMessage kullanır)
console.log(box.setMessage(""));         // "Invalid message!" (#isValidMessage kullanır)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler