چوخ بیچیملیلیک (بیلگی سایار بیلیمی)

ویکی‌پدیادان، آچیق بیلیک‌لیک‌دن

چوخ‌بیچیملیلیک (اینگیلیسجه: polymorphism) بیلگی‌سایار بیلیمینده بیر تایپین باشقا بیر تایپ کیمی داورانما و بو تایپ کیمی قوللانیلابیلمه اؤزللیغیدیر. آبجکت یؤنوملو یازیلیم دیل‌لرینده ایسه چوخ‌بیچیملیلیک، عینی اساس کلاس‌دان الده ائدیلن کلاس‌لاردا پایلاشیلان و یا باشقا سؤزله حدن آرتیق یوکلنمیش عینی مئتود، بو کلاس‌لاردا فرقلی اصوللارلا اویغونلاشدیریلابیلمکدیر. آبجکتین داورانیشی چالیشما زامانیندا بللی اولوندوغونا گؤره، چوخ‌بیچیملیلیک خصوصیتی سایه‌سینده یازیلیمچیلار آبجکت‌لرین تایپینی اؤنجه‌دن بیلملی دئییل‌لر.

اؤرنک‌لر[دَییشدیر]

سی‌پلاس‌پلاس (C++)[دَییشدیر]

#include <string>
#include <type_traits>
#include <iostream>

struct Animal {
  virtual ~Animal() = default;

  virtual std::string talk() const = 0;
};

struct Cat : public Animal {
  std::string talk() const override { return "Miyav!"; }
};

struct Dog : public Animal {
  std::string talk() const override { return "Hav! Hav!"; }
};

static_assert(std::is_polymorphic_v<Animal>);
static_assert(std::is_base_of_v<Animal, Cat>);
static_assert(std::is_base_of_v<Animal, Dog>);

std::string talk(const Animal& a) {
  return a.talk();
}

int main() {
  Cat minnos;
  Dog karabas;

  std::cout << talk(minnos) << '\n';  // Miyav!
  std::cout << talk(karabas) << '\n'; // Hav! Hav!
}
// C++17+  std::variant
#include <string>
#include <variant>
#include <iostream>

struct Cat {
  std::string talk() const { return "Miyav!"; }
};

struct Dog {
  std::string talk() const { return "Hav! Hav!"; }
};

using Animal = std::variant<Cat, Dog>;

std::string talk(const Animal& a) {
  struct v {
    std::string operator()(const Dog& d) const { return d.talk(); }
    std::string operator()(const Cat& c) const { return c.talk(); }
  };

  return std::visit(v{}, a);
}

int main() {
  Cat minnos;
  Dog karabas;

  std::cout << talk(minnos) << '\n';  // Miyav!
  std::cout << talk(karabas) << '\n'; // Hav! Hav!
}

جاوا (Java)[دَییشدیر]

interface IAnimal {
    String getName();
    String talk();
 }

 abstract class Animal implements IAnimal {
    private final String name;
    protected Animal(final String NAME) {
        name = NAME;
    }
    public String getName() {
        return name;
    }
 }

 class cat extends Animal {
    public cat(final String NAME) {
        super(NAME);
    }
    public String talk() {
        return "Miyav!";
    }
 }

 class dog extends Animal {
    public dog(final String NAME) {
        super(NAME);
    }
    public String talk() {
        return "Hav! Hav!";
    }
 }

 public class Test {
    public static void main(final String[] ARGUMENTS) {
        final IAnimal[] animals = {
            new cat("Mirnav"),
            new cat("Kara kedi"),
            new dog("Karabas")
        };
        for (final IAnimal animal : animals) {
            System.out.println(animal.isimAl() + ": " + animal.konus());
        }
    }
 }

اتک یازیلار[دَییشدیر]

قایناقلار[دَییشدیر]

تورکیه تورکجه‌سی ویکی‌پدیاسی‌نین ایشلدنلری طرفیندن یارانمیش«Çok biçimlilik»، مقاله‌سیندن گؤتورولوبدور. (‏۲۵ مارس ۲۰۲۴ تاریخینده یوْخلانیلیبدیر).