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

چوخ‌بیچیملیلیک (اینگیلیسجه: 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»، مقاله‌سیندن گؤتورولوبدور. (‏۲۵ مارس ۲۰۲۴ تاریخینده یوْخلانیلیبدیر).