{"version":"1.0","url":"https://haru-s.hatenablog.com/entry/20070614/1181841613","categories":["D\u8a00\u8a9e"],"author_url":"https://blog.hatena.ne.jp/haru-s/","provider_name":"Hatena Blog","type":"rich","published":"2007-06-14 02:20:13","author_name":"haru-s","height":"190","description":"http://d.hatena.ne.jp/haru-s/20070613/1181756178 \u306e\u7d9a\u304d\uff0epolymorphism\uff08\u3068\u3044\u3046\u304b interface\uff09\u3092\u4f7f\u3048\u3070\uff0c\u300c\u3053\u3053\u3067\u306f\u4f7f\u308f\u306a\u3044\u30e1\u30bd\u30c3\u30c9\u3082\u6301\u3063\u3066\u3044\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u300d\u3068\u3044\u3046\u5236\u7d04\u3092\u5b9f\u73fe\u3067\u304d\u308b\u306a\u3042\uff0e polymorphism: interface I { void run(); void walk(); } class A : I { void run(){} void walk(){} } class B : I { void run(){} void walk(){} } void run(I runner) { runner.run(\u2026","image_url":null,"title":" polymorphism vs duck typing (2)","provider_url":"https://hatena.blog","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fharu-s.hatenablog.com%2Fentry%2F20070614%2F1181841613\" title=\" polymorphism vs duck typing (2) - ...ing logging 4.0\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","blog_url":"https://haru-s.hatenablog.com/","width":"100%","blog_title":"...ing logging 4.0"}