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