duck به معنی اردک است.
duck typing یک اصطلاح در زبانهای جدید مانند ruby است. فرض کنید دو پرنده در دو جعبه در بسته در مقابل شما بگذارند و از شما بپرسند درون این جعبه ها چه پرنده ای وجود دارد. شما جواب خواهید داد اردک. وقتی از شما بپرسند از کجا فهمیدی؟ شما جواب خواهید داد زیرا صدای اردک (quack) را از درون جعبه می شنوم!
پس شما از روی یکی از رفتار (function) های آن پرنده(class) در مورد نوع آن قضاوت کردید.
کامپایلر یا مفسر این زبانها نیز همین قانون را قبول دارد. پس اگر دو کلاس A و B هر دو دارای متد ()x باشند، آنگاه
a.equals(b)
در زبان جاوا این امکان با نام و پیاده سازی دیگری وجود داشته است. آن هم چیزی نیست جز مفهوم Interface. اگر دو کلاس کاملا مختلف، Interface اردک که دارای متد ()quack است را implement کرده باشند، کامپایلر هر دو آنها را اردک می شناسد.
در زبانهایی که duck typing را پشتیبانی می کنند نیازی به تعریف موجودیتی مثل اینترفیس نیست و صرف وجود یک متد خاص در دو کلاس، آنها را هم خانواده می کند.