گاهی اوقات نیاز داریم که درون یک کلاس، یک سری عملیات مشخص را انجام دهیم. برای این کار می‌توانیم از توابع کلاس استفاده کنیم.

✨ مثال: تعریف یک تابع در کلاس

فرض کن می‌خواهیم یک کلاس برای ماشین‌ها (Car) بسازیم و داخل آن یک تابع داشته باشیم که وقتی صدا زده شد، پیامی در خروجی چاپ کند.

کد نمونه:

class Car(var brand: String, var model: String, var year: Int) {
  // تعریف یک تابع در کلاس
  fun ()drive {
    println("Wrooom!") // صدای ماشین!
  }
}

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)

  // صدا زدن تابع
  c1.()drive
}

نکته: وقتی یک تابع داخل کلاس تعریف شود، به آن تابع کلاس (Class Function) یا تابع عضو (Member Function) می‌گویند.

نکته: هر شیئی که از کلاس ساخته شود، می‌تواند به این توابع دسترسی داشته باشد.


📌 ارسال پارامتر به توابع کلاس

همان‌طور که در توابع معمولی می‌توان ورودی (پارامتر) دریافت کرد، در توابع کلاس هم این امکان وجود دارد.

💡 مثال: تابعی که حداکثر سرعت را چاپ می‌کند

در این مثال، دو تابع داریم:

  1. ()drive که مثل قبل یک پیام ساده چاپ می‌کند.
  2. ()speed که یک مقدار دریافت کرده و حداکثر سرعت ماشین را چاپ می‌کند.

کد نمونه:

class Car(var brand: String, var model: String, var year: Int) {
  // تابع کلاس ساده
  fun ()drive {
    println("Wrooom!")
  }

  // تابع کلاس با ورودی
  fun ()speed(maxSpeed: Int) {
    println("Max speed is: $maxSpeed km/h")
  }
}

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)

  // صدا زدن توابع
  c1.()drive
  c1.()speed(200)
}

📌 خروجی مورد انتظار:

Wrooom!
Max speed is: 200 km/h

نکته: می‌توان به راحتی مقدار حداکثر سرعت را هنگام صدا زدن تابع ()speed مشخص کرد.

نکته: مقدار ورودی در ()speed از نوع Int است، اما می‌توان ورودی‌های دیگری مثل String یا Double هم ارسال کرد.


🎯 چالش برای تو!

یک کلاس Person بساز که دو تابع داشته باشد:

  1. ()introduce که نام و سن شخص را چاپ کند.
  2. ()greet که نام شخص را بگیرد و بگوید: “سلام [نام]!”