CINXE.COM

ポリモーフィズム - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="ja" dir="ltr"> <head> <meta charset="UTF-8"> <title>ポリモーフィズム - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )jawikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"ja", "wgMonthNames":["","1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"wgRequestId":"d2980206-3bbc-4202-a191-531a2b856d12","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"ポリモーフィズム","wgTitle":"ポリモーフィズム","wgCurRevisionId":98615556,"wgRevisionId":98615556,"wgArticleId":414811,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["出典を必要とする記事/2021年10月","独自研究の除去が必要な記事/2021年10月","出典を必要とする節のある記事/2021年10月","ポリモーフィズム (計算機科学)","オブジェクト指向","プログラミング言語の概念"],"wgPageViewLanguage":"ja","wgPageContentLanguage":"ja","wgPageContentModel":"wikitext","wgRelevantPageName":"ポリモーフィズム","wgRelevantArticleId":414811,"wgIsProbablyEditable":true, "wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRedirectedFrom":"多態性","wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"ja","pageLanguageDir":"ltr","pageVariantFallbacks":"ja"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgInternalRedirectTargetUrl":"/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0","wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q3240252","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList", "mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.PDFLinkIcon":"ready","ext.gadget.RedirectColor":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP", "ext.centralNotice.startUp","ext.gadget.NormalizeCharWidth","ext.gadget.suppressEnterAtSummaryBox","ext.gadget.checkSignature","ext.gadget.charinsert","ext.gadget.WikiMiniAtlas","ext.gadget.switcher","ext.gadget.protectionIndicator","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=ja&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=ext.gadget.PDFLinkIcon%2CRedirectColor&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="ポリモーフィズム - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//ja.m.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"> <link rel="alternate" type="application/x-wiki" title="編集" href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (ja)"> <link rel="EditURI" type="application/rsd+xml" href="//ja.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja"> <link rel="alternate" type="application/atom+xml" title="WikipediaのAtomフィード" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-ポリモーフィズム rootpage-ポリモーフィズム skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">コンテンツにスキップ</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="メインメニュー" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">メインメニュー</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">メインメニュー</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">非表示</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> 案内 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" title="メインページに移動する [z]" accesskey="z"><span>メインページ</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB" title="このプロジェクトについて、できること、情報を入手する場所"><span>コミュニティ・ポータル</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:%E6%9C%80%E8%BF%91%E3%81%AE%E5%87%BA%E6%9D%A5%E4%BA%8B" title="最近の出来事の背景を知る"><span>最近の出来事</span></a></li><li id="n-newpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%B0%E3%81%97%E3%81%84%E3%83%9A%E3%83%BC%E3%82%B8" title="最近新規に作成されたページの一覧"><span>新しいページ</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0" title="このウィキにおける最近の更新の一覧 [r]" accesskey="r"><span>最近の更新</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%81%8A%E3%81%BE%E3%81%8B%E3%81%9B%E8%A1%A8%E7%A4%BA" title="無作為に選択されたページを読み込む [x]" accesskey="x"><span>おまかせ表示</span></a></li><li id="n-sandbox" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9" title="練習用のページ"><span>練習用ページ</span></a></li><li id="n-commonsupload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=ja" title="画像やメディアファイルをウィキメディア・コモンズにアップロード"><span>アップロード (ウィキメディア・コモンズ)</span></a></li> </ul> </div> </div> <div id="p-help" class="vector-menu mw-portlet mw-portlet-help" > <div class="vector-menu-heading"> ヘルプ </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:%E7%9B%AE%E6%AC%A1" title="情報を得る場所"><span>ヘルプ</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:%E4%BA%95%E6%88%B8%E7%AB%AF" title="プロジェクトについての意見交換"><span>井戸端</span></a></li><li id="n-notice" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B" title="プロジェクトについてのお知らせ"><span>お知らせ</span></a></li><li id="n-bugreportspage" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%83%90%E3%82%B0%E3%81%AE%E5%A0%B1%E5%91%8A" title="ウィキペディア・ソフトウェアのバグ報告"><span>バグの報告</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:%E9%80%A3%E7%B5%A1%E5%85%88" title="ウィキペディアやウィキメディア財団に関する連絡先"><span>ウィキペディアに関するお問い合わせ</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-ja.svg" style="width: 7.5em; height: 1.25em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-ja.svg" width="100" height="14" style="width: 6.25em; height: 0.875em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%A4%9C%E7%B4%A2" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Wikipedia内を検索 [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>検索</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Wikipedia内を検索" aria-label="Wikipedia内を検索" autocapitalize="sentences" title="Wikipedia内を検索 [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="特別:検索"> </div> <button class="cdx-button cdx-search-input__end-button">検索</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="個人用ツール"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="ページのフォントサイズ、幅、色の外観を変更する" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="表示" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">表示</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_ja.wikipedia.org&amp;uselang=ja" class=""><span>寄付</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&amp;returnto=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません" class=""><span>アカウント作成</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&amp;returnto=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o" class=""><span>ログイン</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="その他の操作" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="個人用ツール" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">個人用ツール</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="利用者メニュー" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_ja.wikipedia.org&amp;uselang=ja"><span>寄付</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&amp;returnto=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>アカウント作成</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&amp;returnto=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>ログイン</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> ログアウトした編集者のページ <a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%B8%E3%82%88%E3%81%86%E3%81%93%E3%81%9D" aria-label="編集の詳細"><span>もっと詳しく</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E8%87%AA%E5%88%86%E3%81%AE%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2" title="このIPアドレスからなされた編集の一覧 [y]" accesskey="y"><span>投稿記録</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%88%E3%83%BC%E3%82%AF%E3%83%9A%E3%83%BC%E3%82%B8" title="このIPアドレスからなされた編集についての議論 [n]" accesskey="n"><span>トーク</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="目次" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">目次</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">非表示</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">ページ先頭</div> </a> </li> <li id="toc-歴史" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#歴史"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>歴史</span> </div> </a> <ul id="toc-歴史-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ポリモーフィズムの種類" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#ポリモーフィズムの種類"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>ポリモーフィズムの種類</span> </div> </a> <button aria-controls="toc-ポリモーフィズムの種類-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>ポリモーフィズムの種類サブセクションを切り替えます</span> </button> <ul id="toc-ポリモーフィズムの種類-sublist" class="vector-toc-list"> <li id="toc-アドホック多相" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#アドホック多相"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>アドホック多相</span> </div> </a> <ul id="toc-アドホック多相-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-パラメトリック多相" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#パラメトリック多相"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>パラメトリック多相</span> </div> </a> <ul id="toc-パラメトリック多相-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-サブタイピング" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#サブタイピング"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>サブタイピング</span> </div> </a> <ul id="toc-サブタイピング-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ロー多相" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ロー多相"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>ロー多相</span> </div> </a> <ul id="toc-ロー多相-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ポリタイピズム" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ポリタイピズム"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.5</span> <span>ポリタイピズム</span> </div> </a> <ul id="toc-ポリタイピズム-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-ポリモーフィズムの実装的側面" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#ポリモーフィズムの実装的側面"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>ポリモーフィズムの実装的側面</span> </div> </a> <button aria-controls="toc-ポリモーフィズムの実装的側面-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>ポリモーフィズムの実装的側面サブセクションを切り替えます</span> </button> <ul id="toc-ポリモーフィズムの実装的側面-sublist" class="vector-toc-list"> <li id="toc-静的な多態性と動的な多態性" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#静的な多態性と動的な多態性"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>静的な多態性と動的な多態性</span> </div> </a> <ul id="toc-静的な多態性と動的な多態性-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-単態性と多態性" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#単態性と多態性"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>単態性と多態性</span> </div> </a> <ul id="toc-単態性と多態性-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-注釈" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#注釈"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>注釈</span> </div> </a> <ul id="toc-注釈-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-出典" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#出典"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>出典</span> </div> </a> <ul id="toc-出典-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-関連項目" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#関連項目"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>関連項目</span> </div> </a> <ul id="toc-関連項目-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="目次" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="目次の表示・非表示を切り替え" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">目次の表示・非表示を切り替え</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">ポリモーフィズム</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="特定の記事の別の言語版に移動します。 利用可能な言語41件" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-41" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">41の言語版</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%AA%D8%B9%D8%AF%D8%AF%D9%8A%D8%A9_%D8%A7%D9%84%D8%A3%D8%B4%D9%83%D8%A7%D9%84_(%D8%B9%D9%84%D9%85_%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8)" title="アラビア語: تعددية الأشكال (علم الحاسوب)" lang="ar" hreflang="ar" data-title="تعددية الأشكال (علم الحاسوب)" data-language-autonym="العربية" data-language-local-name="アラビア語" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%DA%86%D9%88%D8%AE_%D8%A8%DB%8C%DA%86%DB%8C%D9%85%D9%84%DB%8C%D9%84%DB%8C%DA%A9_(%D8%A8%DB%8C%D9%84%DA%AF%DB%8C_%D8%B3%D8%A7%DB%8C%D8%A7%D8%B1_%D8%A8%DB%8C%D9%84%DB%8C%D9%85%DB%8C)" title="South Azerbaijani: چوخ بیچیملیلیک (بیلگی سایار بیلیمی)" lang="azb" hreflang="azb" data-title="چوخ بیچیملیلیک (بیلگی سایار بیلیمی)" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BB%D1%96%D0%BC%D0%B0%D1%80%D1%84%D1%96%D0%B7%D0%BC" title="Belarusian (Taraškievica orthography): Палімарфізм" lang="be-tarask" hreflang="be-tarask" data-title="Палімарфізм" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D1%8A%D0%BC_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="ブルガリア語: Полиморфизъм (информатика)" lang="bg" hreflang="bg" data-title="Полиморфизъм (информатика)" data-language-autonym="Български" data-language-local-name="ブルガリア語" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AA%E0%A6%B2%E0%A6%BF%E0%A6%AE%E0%A6%B0%E0%A6%AB%E0%A6%BF%E0%A6%9C%E0%A6%AE_(%E0%A6%95%E0%A6%AE%E0%A7%8D%E0%A6%AA%E0%A6%BF%E0%A6%89%E0%A6%9F%E0%A6%BE%E0%A6%B0_%E0%A6%AC%E0%A6%BF%E0%A6%9C%E0%A7%8D%E0%A6%9E%E0%A6%BE%E0%A6%A8)" title="ベンガル語: পলিমরফিজম (কম্পিউটার বিজ্ঞান)" lang="bn" hreflang="bn" data-title="পলিমরফিজম (কম্পিউটার বিজ্ঞান)" data-language-autonym="বাংলা" data-language-local-name="ベンガル語" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Polimorfizam_(programiranje)" title="ボスニア語: Polimorfizam (programiranje)" lang="bs" hreflang="bs" data-title="Polimorfizam (programiranje)" data-language-autonym="Bosanski" data-language-local-name="ボスニア語" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Polimorfisme_(programaci%C3%B3)" title="カタロニア語: Polimorfisme (programació)" lang="ca" hreflang="ca" data-title="Polimorfisme (programació)" data-language-autonym="Català" data-language-local-name="カタロニア語" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Polymorfismus_(programov%C3%A1n%C3%AD)" title="チェコ語: Polymorfismus (programování)" lang="cs" hreflang="cs" data-title="Polymorfismus (programování)" data-language-autonym="Čeština" data-language-local-name="チェコ語" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Polymorphie_(Programmierung)" title="ドイツ語: Polymorphie (Programmierung)" lang="de" hreflang="de" data-title="Polymorphie (Programmierung)" data-language-autonym="Deutsch" data-language-local-name="ドイツ語" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%A0%CE%BF%CE%BB%CF%85%CE%BC%CE%BF%CF%81%CF%86%CE%B9%CF%83%CE%BC%CF%8C%CF%82_(%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82)" title="ギリシャ語: Πολυμορφισμός (υπολογιστές)" lang="el" hreflang="el" data-title="Πολυμορφισμός (υπολογιστές)" data-language-autonym="Ελληνικά" data-language-local-name="ギリシャ語" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Polymorphism_(computer_science)" title="英語: Polymorphism (computer science)" lang="en" hreflang="en" data-title="Polymorphism (computer science)" data-language-autonym="English" data-language-local-name="英語" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)" title="スペイン語: Polimorfismo (informática)" lang="es" hreflang="es" data-title="Polimorfismo (informática)" data-language-autonym="Español" data-language-local-name="スペイン語" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Pol%C3%BCmorfism_(informaatika)" title="エストニア語: Polümorfism (informaatika)" lang="et" hreflang="et" data-title="Polümorfism (informaatika)" data-language-autonym="Eesti" data-language-local-name="エストニア語" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%DA%86%D9%86%D8%AF%D8%B1%DB%8C%D8%AE%D8%AA%DB%8C_(%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C)" title="ペルシア語: چندریختی (برنامه‌نویسی)" lang="fa" hreflang="fa" data-title="چندریختی (برنامه‌نویسی)" data-language-autonym="فارسی" data-language-local-name="ペルシア語" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Polymorfismi" title="フィンランド語: Polymorfismi" lang="fi" hreflang="fi" data-title="Polymorfismi" data-language-autonym="Suomi" data-language-local-name="フィンランド語" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Polymorphisme_(informatique)" title="フランス語: Polymorphisme (informatique)" lang="fr" hreflang="fr" data-title="Polymorphisme (informatique)" data-language-autonym="Français" data-language-local-name="フランス語" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%A4%D7%95%D7%9C%D7%99%D7%9E%D7%95%D7%A8%D7%A4%D7%99%D7%96%D7%9D_(%D7%9E%D7%93%D7%A2%D7%99_%D7%94%D7%9E%D7%97%D7%A9%D7%91)" title="ヘブライ語: פולימורפיזם (מדעי המחשב)" lang="he" hreflang="he" data-title="פולימורפיזם (מדעי המחשב)" data-language-autonym="עברית" data-language-local-name="ヘブライ語" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AA%E0%A5%8B%E0%A4%B2%E0%A4%BF%E0%A4%AE%E0%A5%8B%E0%A4%B0%E0%A5%8D%E0%A4%AB%E0%A4%BC%E0%A4%BF%E0%A4%9C%E0%A5%8D%E0%A4%AE_(%E0%A4%95%E0%A4%82%E0%A4%AA%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%9F%E0%A4%B0_%E0%A4%B5%E0%A4%BF%E0%A4%9C%E0%A5%8D%E0%A4%9E%E0%A4%BE%E0%A4%A8)" title="ヒンディー語: पोलिमोर्फ़िज्म (कंप्यूटर विज्ञान)" lang="hi" hreflang="hi" data-title="पोलिमोर्फ़िज्म (कंप्यूटर विज्ञान)" data-language-autonym="हिन्दी" data-language-local-name="ヒンディー語" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Polimorfizam_(ra%C4%8Dunarstvo)" title="クロアチア語: Polimorfizam (računarstvo)" lang="hr" hreflang="hr" data-title="Polimorfizam (računarstvo)" data-language-autonym="Hrvatski" data-language-local-name="クロアチア語" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Polimorfizmus_(informatika)" title="ハンガリー語: Polimorfizmus (informatika)" lang="hu" hreflang="hu" data-title="Polimorfizmus (informatika)" data-language-autonym="Magyar" data-language-local-name="ハンガリー語" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%8A%D5%B8%D5%AC%D5%AB%D5%B4%D5%B8%D6%80%D6%86%D5%AB%D5%A6%D5%B4_(%D5%AE%D6%80%D5%A1%D5%A3%D6%80%D5%A1%D5%BE%D5%B8%D6%80%D5%B8%D6%82%D5%B4)" title="アルメニア語: Պոլիմորֆիզմ (ծրագրավորում)" lang="hy" hreflang="hy" data-title="Պոլիմորֆիզմ (ծրագրավորում)" data-language-autonym="Հայերեն" data-language-local-name="アルメニア語" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Polimorfismo_(informatica)" title="イタリア語: Polimorfismo (informatica)" lang="it" hreflang="it" data-title="Polimorfismo (informatica)" data-language-autonym="Italiano" data-language-local-name="イタリア語" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/%E1%83%9E%E1%83%9D%E1%83%9A%E1%83%98%E1%83%9B%E1%83%9D%E1%83%A0%E1%83%A4%E1%83%98%E1%83%96%E1%83%9B%E1%83%98_(%E1%83%99%E1%83%9D%E1%83%9B%E1%83%9E%E1%83%98%E1%83%A3%E1%83%A2%E1%83%94%E1%83%A0%E1%83%A3%E1%83%9A%E1%83%98_%E1%83%9E%E1%83%A0%E1%83%9D%E1%83%92%E1%83%A0%E1%83%90%E1%83%9B%E1%83%98%E1%83%A0%E1%83%94%E1%83%91%E1%83%90)" title="ジョージア語: პოლიმორფიზმი (კომპიუტერული პროგრამირება)" lang="ka" hreflang="ka" data-title="პოლიმორფიზმი (კომპიუტერული პროგრამირება)" data-language-autonym="ქართული" data-language-local-name="ジョージア語" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%8B%A4%ED%98%95%EC%84%B1_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)" title="韓国語: 다형성 (컴퓨터 과학)" lang="ko" hreflang="ko" data-title="다형성 (컴퓨터 과학)" data-language-autonym="한국어" data-language-local-name="韓国語" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Polimorfizmas_(programavime)" title="リトアニア語: Polimorfizmas (programavime)" lang="lt" hreflang="lt" data-title="Polimorfizmas (programavime)" data-language-autonym="Lietuvių" data-language-local-name="リトアニア語" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Polimorfisms_(programm%C4%93%C5%A1ana)" title="ラトビア語: Polimorfisms (programmēšana)" lang="lv" hreflang="lv" data-title="Polimorfisms (programmēšana)" data-language-autonym="Latviešu" data-language-local-name="ラトビア語" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%AA%E0%B5%8B%E0%B4%B3%E0%B4%BF%E0%B4%AE%E0%B5%8B%E0%B5%BC%E0%B4%AB%E0%B4%BF%E0%B4%B8%E0%B4%82_(%E0%B4%95%E0%B4%AE%E0%B5%8D%E0%B4%AA%E0%B5%8D%E0%B4%AF%E0%B5%82%E0%B4%9F%E0%B5%8D%E0%B4%9F%E0%B5%BC_%E0%B4%B6%E0%B4%BE%E0%B4%B8%E0%B5%8D%E0%B4%A4%E0%B5%8D%E0%B4%B0%E0%B4%82)" title="マラヤーラム語: പോളിമോർഫിസം (കമ്പ്യൂട്ടർ ശാസ്ത്രം)" lang="ml" hreflang="ml" data-title="പോളിമോർഫിസം (കമ്പ്യൂട്ടർ ശാസ്ത്രം)" data-language-autonym="മലയാളം" data-language-local-name="マラヤーラム語" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Polymorfisme_(informatica)" title="オランダ語: Polymorfisme (informatica)" lang="nl" hreflang="nl" data-title="Polymorfisme (informatica)" data-language-autonym="Nederlands" data-language-local-name="オランダ語" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Polimorfizm_(informatyka)" title="ポーランド語: Polimorfizm (informatyka)" lang="pl" hreflang="pl" data-title="Polimorfizm (informatyka)" data-language-autonym="Polski" data-language-local-name="ポーランド語" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Polimorfismo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)" title="ポルトガル語: Polimorfismo (ciência da computação)" lang="pt" hreflang="pt" data-title="Polimorfismo (ciência da computação)" data-language-autonym="Português" data-language-local-name="ポルトガル語" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Polimorfism_(inginerie_software)" title="ルーマニア語: Polimorfism (inginerie software)" lang="ro" hreflang="ro" data-title="Polimorfism (inginerie software)" data-language-autonym="Română" data-language-local-name="ルーマニア語" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="ロシア語: Полиморфизм (информатика)" lang="ru" hreflang="ru" data-title="Полиморфизм (информатика)" data-language-autonym="Русский" data-language-local-name="ロシア語" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Polimorfizmi_(shkenc%C3%AB_kompjuterike)" title="アルバニア語: Polimorfizmi (shkencë kompjuterike)" lang="sq" hreflang="sq" data-title="Polimorfizmi (shkencë kompjuterike)" data-language-autonym="Shqip" data-language-local-name="アルバニア語" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%B0%D0%BC_(%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%BE)" title="セルビア語: Полиморфизам (рачунарство)" lang="sr" hreflang="sr" data-title="Полиморфизам (рачунарство)" data-language-autonym="Српски / srpski" data-language-local-name="セルビア語" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Polymorfism_(objektorienterad_programmering)" title="スウェーデン語: Polymorfism (objektorienterad programmering)" lang="sv" hreflang="sv" data-title="Polymorfism (objektorienterad programmering)" data-language-autonym="Svenska" data-language-local-name="スウェーデン語" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%AA%E0%AE%B2%E0%AF%8D%E0%AE%B2%E0%AF%81%E0%AE%B0%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AF%8B%E0%AE%B1%E0%AF%8D%E0%AE%B1%E0%AE%AE%E0%AF%8D_(%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AF%8A%E0%AE%B1%E0%AE%BF_%E0%AE%85%E0%AE%B1%E0%AE%BF%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D)" title="タミル語: பல்லுருத்தோற்றம் (கணிப்பொறி அறிவியல்)" lang="ta" hreflang="ta" data-title="பல்லுருத்தோற்றம் (கணிப்பொறி அறிவியல்)" data-language-autonym="தமிழ்" data-language-local-name="タミル語" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/%C3%87okbi%C3%A7imlilik" title="トルコ語: Çokbiçimlilik" lang="tr" hreflang="tr" data-title="Çokbiçimlilik" data-language-autonym="Türkçe" data-language-local-name="トルコ語" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%96%D0%BC%D0%BE%D1%80%D1%84%D1%96%D0%B7%D0%BC_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" title="ウクライナ語: Поліморфізм (програмування)" lang="uk" hreflang="uk" data-title="Поліморфізм (програмування)" data-language-autonym="Українська" data-language-local-name="ウクライナ語" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/%C4%90a_h%C3%ACnh_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" title="ベトナム語: Đa hình (khoa học máy tính)" lang="vi" hreflang="vi" data-title="Đa hình (khoa học máy tính)" data-language-autonym="Tiếng Việt" data-language-local-name="ベトナム語" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E5%A4%9A%E6%80%81_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)" title="中国語: 多态 (计算机科学)" lang="zh" hreflang="zh" data-title="多态 (计算机科学)" data-language-autonym="中文" data-language-local-name="中国語" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E5%A4%9A%E6%85%8B_(%E9%9B%BB%E8%85%A6%E7%A7%91%E5%AD%B8)" title="広東語: 多態 (電腦科學)" lang="yue" hreflang="yue" data-title="多態 (電腦科學)" data-language-autonym="粵語" data-language-local-name="広東語" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q3240252#sitelinks-wikipedia" title="言語間リンクを編集" class="wbc-editpage">リンクを編集</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="名前空間"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="本文を閲覧 [c]" accesskey="c"><span>ページ</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" rel="discussion" title="本文ページについての議論 [t]" accesskey="t"><span>ノート</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="別の言語に切り替える" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">日本語</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="表示"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span>閲覧</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=history" title="このページの過去の版 [h]" accesskey="h"><span>履歴表示</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="ツール" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">ツール</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">ツール</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">非表示</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="その他の操作" > <div class="vector-menu-heading"> 操作 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span>閲覧</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=history"><span>履歴表示</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> 全般 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%83/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ここにリンクしている全ウィキページの一覧 [j]" accesskey="j"><span>リンク元</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E9%96%A2%E9%80%A3%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%9B%B4%E6%96%B0%E7%8A%B6%E6%B3%81/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" rel="nofollow" title="このページからリンクしているページの最近の更新 [k]" accesskey="k"><span>関連ページの更新状況</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89" title="ファイルをアップロードする [u]" accesskey="u"><span>ファイルをアップロード</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E7%89%B9%E5%88%A5%E3%83%9A%E3%83%BC%E3%82%B8%E4%B8%80%E8%A6%A7" title="特別ページの一覧 [q]" accesskey="q"><span>特別ページ</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;oldid=98615556" title="このページのこの版への固定リンク"><span>この版への固定リンク</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=info" title="このページについての詳細情報"><span>ページ情報</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%81%93%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%BC%95%E7%94%A8&amp;page=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;id=98615556&amp;wpFormIdentifier=titleform" title="このページの引用方法"><span>このページを引用</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:UrlShortener&amp;url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2583%259D%25E3%2583%25AA%25E3%2583%25A2%25E3%2583%25BC%25E3%2583%2595%25E3%2582%25A3%25E3%2582%25BA%25E3%2583%25A0"><span>短縮URLを取得する</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:QrCode&amp;url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2583%259D%25E3%2583%25AA%25E3%2583%25A2%25E3%2583%25BC%25E3%2583%2595%25E3%2582%25A3%25E3%2582%25BA%25E3%2583%25A0"><span>QRコードをダウンロード</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> 印刷/書き出し </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%96%E3%83%83%E3%82%AF&amp;bookcmd=book_creator&amp;referer=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span>ブックの新規作成</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:DownloadAsPdf&amp;page=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=show-download-screen"><span>PDF 形式でダウンロード</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;printable=yes" title="このページの印刷用ページ [p]" accesskey="p"><span>印刷用バージョン</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> 他のプロジェクト </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q3240252" title="関連付けられたデータリポジトリ項目へのリンク [g]" accesskey="g"><span>ウィキデータ項目</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">表示</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">非表示</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">出典: フリー百科事典『ウィキペディア(Wikipedia)』</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><span class="mw-redirectedfrom">(<a href="/w/index.php?title=%E5%A4%9A%E6%85%8B%E6%80%A7&amp;redirect=no" class="mw-redirect" title="多態性">多態性</a>から転送)</span></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="ja" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r101346560">.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}html.skin-theme-clientpref-night .mw-parser-output .hatnote>table{color:inherit}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .hatnote>table{color:inherit}}</style><div class="hatnote dablink noprint"><table style="width:100%; background:transparent;"> <tbody><tr><td style="width:25px;"><span typeof="mw:File"><a href="/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Disambig_gray.svg" class="mw-file-description" title="曖昧さ回避"><img alt="曖昧さ回避" src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Disambig_gray.svg/25px-Disambig_gray.svg.png" decoding="async" width="25" height="19" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Disambig_gray.svg/38px-Disambig_gray.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Disambig_gray.svg/50px-Disambig_gray.svg.png 2x" data-file-width="220" data-file-height="168" /></a></span></td> <td>この項目では、プログラミング言語の概念について説明しています。化学用語については「<a href="/wiki/%E5%A4%9A%E5%BD%A2" title="多形">多形</a>」を、生物学用語については「<a href="/wiki/%E5%A4%9A%E5%9E%8B" title="多型">多型</a>」をご覧ください。</td> </tr></tbody></table></div> <style data-mw-deduplicate="TemplateStyles:r101304250">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-複数の問題 plainlinks metadata ambox ambox-content" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Achtung-orange.svg/40px-Achtung-orange.svg.png" decoding="async" width="40" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Achtung-orange.svg/60px-Achtung-orange.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/12/Achtung-orange.svg/80px-Achtung-orange.svg.png 2x" data-file-width="628" data-file-height="550" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">この記事には<b>複数の問題があります</b>。<a class="external text" href="https://ja.wikipedia.org/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit">改善</a>や<a href="/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0" title="ノート:ポリモーフィズム">ノートページ</a>での議論にご協力ください。 <ul><li><b><a href="/wiki/Wikipedia:%E5%87%BA%E5%85%B8%E3%82%92%E6%98%8E%E8%A8%98%E3%81%99%E3%82%8B" title="Wikipedia:出典を明記する">出典</a></b>がまったく示されていないか不十分です。内容に関する<a href="/wiki/Wikipedia:%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1%E6%BA%90" title="Wikipedia:信頼できる情報源">文献や情報源</a>が必要です。<small>(<span title="2021-10">2021年10月</span>)</small><br /></li> <li><b><a href="/wiki/Wikipedia:%E7%8B%AC%E8%87%AA%E7%A0%94%E7%A9%B6%E3%81%AF%E8%BC%89%E3%81%9B%E3%81%AA%E3%81%84" title="Wikipedia:独自研究は載せない">独自研究</a></b>が含まれているおそれがあります。<small>(<span title="2021-10">2021年10月</span>)</small><br /><small><span class="plainlinks">出典検索<a href="/wiki/Template:Find_sources_mainspace" title="Template:Find sources mainspace"><sup>?</sup></a>:&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;as_eq=wikipedia&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;num=50">"ポリモーフィズム"</a>&#160;–&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;tbm=nws">ニュース</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;tbs=bks:1&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">書籍</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//scholar.google.co.jp/scholar?num=100&amp;hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">スカラー</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ci.nii.ac.jp/opensearch/search?lang=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;range=2&amp;count=200&amp;sortorder=1&amp;type=0">CiNii</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.jstage.jst.go.jp/result/global/-char/ja?globalSearchKey=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">J-STAGE</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ndlsearch.ndl.go.jp/api/openurl?any=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">NDL</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://dlib.jp/?q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">dlib.jp</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://jpsearch.go.jp/csearch/jps-cross?csid=jps-cross&amp;keyword=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">ジャパンサーチ</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://wikipedialibrary.wmflabs.org/partners/">TWL</a></span></small></li></ul></div></td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r101384370">.mw-parser-output .sidebar{width:auto;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:75%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:720px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}</style><table class="sidebar nomobile nowraplinks"><tbody><tr><th class="sidebar-title" style="background-color: rgba(51, 153, 255, 0.15);"><a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a></th></tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> 主要カテゴリ</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="/wiki/%E9%9D%99%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="静的型付け">静的型付け</a> vs <a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a><br /><a href="https://en.wikipedia.org/wiki/Strong_and_weak_typing" class="extiw" title="en:Strong and weak typing">強い</a> vs <a href="https://en.wikipedia.org/wiki/Strong_and_weak_typing" class="extiw" title="en:Strong and weak typing">弱い</a><br /><a href="https://en.wikipedia.org/wiki/Manifest_typing" class="extiw" title="en:Manifest typing">明示的</a> vs <a href="/wiki/%E5%9E%8B%E6%8E%A8%E8%AB%96" title="型推論">型推論</a><br /><a href="https://en.wikipedia.org/wiki/Nominal_type_system" class="extiw" title="en:Nominal type system">名前的</a> vs <a href="https://en.wikipedia.org/wiki/Structural_type_system" class="extiw" title="en:Structural type system">構造的</a><br /><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ダック・タイピング">ダックタイピング</a><br /></td> </tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> マイナーカテゴリ</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="/wiki/%E3%82%B5%E3%83%96%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="サブタイピング (計算機科学)">部分型</a><br /><a href="/wiki/%E5%86%8D%E5%B8%B0%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B" title="再帰データ型">再帰型</a><br /><a href="https://en.wikipedia.org/wiki/Substructural_type_system" class="extiw" title="en:Substructural type system">部分構造型</a><br /><a href="/wiki/%E4%BE%9D%E5%AD%98%E5%9E%8B" title="依存型">依存型</a><br /><a href="https://en.wikipedia.org/wiki/Gradual_typing" class="extiw" title="en:Gradual typing">漸進的型付け</a><br /><a href="https://en.wikipedia.org/wiki/Flow-sensitive_typing" class="extiw" title="en:Flow-sensitive typing">フロータイピング</a><br /><a href="https://en.wikipedia.org/wiki/Latent_typing" class="extiw" title="en:Latent typing">潜在的型付け</a></td> </tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> 型理論のコンセプト</th></tr><tr><td class="sidebar-content" style="text-align:center;"> <a href="https://en.wikipedia.org/wiki/Product_type" class="extiw" title="en:Product type">直積型</a> - <a href="https://en.wikipedia.org/wiki/Sum_type" class="extiw" title="en:Sum type">直和型</a><br /><a href="https://en.wikipedia.org/wiki/Intersection_type" class="extiw" title="en:Intersection type">交差型</a> - <a href="https://en.wikipedia.org/wiki/Union_type" class="extiw" title="en:Union type">共用型</a><br /><a href="https://en.wikipedia.org/wiki/Unit_type" class="extiw" title="en:Unit type">単一型</a> - <a href="https://en.wikipedia.org/wiki/Option_type" class="extiw" title="en:Option type">選択型</a><br /><a href="https://en.wikipedia.org/wiki/Inductive_type" class="extiw" title="en:Inductive type">帰納型</a> - <a href="https://en.wikipedia.org/wiki/Refinement_type" class="extiw" title="en:Refinement type">精製型</a><br /><a href="https://en.wikipedia.org/wiki/Top_type" class="extiw" title="en:Top type">トップ型</a> - <a href="/wiki/%E3%83%9C%E3%83%88%E3%83%A0%E5%9E%8B" title="ボトム型">ボトム型</a><br /><a href="https://en.wikipedia.org/wiki/Function_type" class="extiw" title="en:Function type">函数型</a> - <a href="https://en.wikipedia.org/wiki/Quotient_type" class="extiw" title="en:Quotient type">商型</a><br /><a href="https://en.wikipedia.org/wiki/System_F" class="extiw" title="en:System F">全称型</a> - <a href="https://en.wikipedia.org/wiki/Existential_type" class="extiw" title="en:Existential type">存在型</a><br /><a href="https://en.wikipedia.org/wiki/Uniqueness_type" class="extiw" title="en:Uniqueness type">一意型</a> - <a href="https://en.wikipedia.org/wiki/Substructural_type_system#Linear_type_systems" class="extiw" title="en:Substructural type system">線形型</a></td> </tr></tbody></table> <p><br /> <b>ポリモーフィズム</b>(<a href="/wiki/%E8%8B%B1%E8%AA%9E" title="英語">英</a>&#58; <span lang="en">polymorphism</span>)とは、それぞれ異なる型に一元アクセスできる共通接点の提供<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup>、またはそれぞれ異なる型の多重定義を一括表現できる共通記号の提供<sup id="cite_ref-Luca2_2-0" class="reference"><a href="#cite_note-Luca2-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup>を目的にした、<a href="/wiki/%E5%9E%8B%E7%90%86%E8%AB%96" title="型理論">型理論</a>または<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E7%90%86%E8%AB%96&amp;action=edit&amp;redlink=1" class="new" title="「プログラミング言語理論」 (存在しないページ)">プログラミング言語理論</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Programming_language_theory" class="extiw" title="en:Programming language theory">英語版</a>)</span></span>の概念および実装である。この用語は、有機組織および生物の種は様々な形態と段階を持つという<a href="/wiki/%E7%94%9F%E7%89%A9%E5%AD%A6" title="生物学">生物学</a>の概念からの借用語である<sup id="cite_ref-Moved_3-0" class="reference"><a href="#cite_note-Moved-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup>。<b>多態性</b>、<b>多相性</b>と邦訳されることが多い。 </p><p>ポリモーフィズムは、通常以下の三種に分けられる。 </p> <dl><dt>アドホック多相</dt> <dd>(ad hoc polymorphism)</dd> <dd>恣意的な型の集合に一つの共通接点を提供する。<a href="/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9" title="多重定義">関数オーバーロード</a>、<a href="/wiki/Mixin" title="Mixin">Mix-in</a>のいち実装、<a href="/wiki/%E5%9E%8B%E3%82%AF%E3%83%A9%E3%82%B9" title="型クラス">型クラス</a>など。</dd> <dt>パラメトリック多相</dt> <dd>(parametric polymorphism)</dd> <dd>詳細化されていない型要素を内包する抽象的な型に記号表現を提供する。<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9" class="mw-redirect" title="ジェネリクス">ジェネリクス</a>や<a href="/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E" class="mw-redirect" title="関数型言語">関数型言語</a>の型構築子など。</dd> <dt>サブタイピング</dt> <dd>(subtyping)</dd> <dd>サブタイプ多相(subtype polymorphism)やインクルージョン多相(inclusion polymorphism)とも。上位型をその下位型の数々で代替できるようにする<sup id="cite_ref-gbooch_4-0" class="reference"><a href="#cite_note-gbooch-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup>。<a href="/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="オブジェクト指向プログラミング">オブジェクト指向</a>の多態性はこれを指す。</dd></dl> <p>この他に、<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%AD%E3%83%BC%E5%A4%9A%E7%9B%B8&amp;action=edit&amp;redlink=1" class="new" title="「ロー多相」 (存在しないページ)">ロー多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Row_polymorphism" class="extiw" title="en:Row polymorphism">英語版</a>)</span></span>(row polymorphism)とポリタイピズム(polytypism)<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">&#91;</span>注釈 1<span class="cite-bracket">&#93;</span></a></sup>も挙げられることがある。対義語はモノモーフィズム(Monomorphism)である。 </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="歴史"><span id=".E6.AD.B4.E5.8F.B2"></span>歴史</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=1" title="節を編集: 歴史"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>ポリモーフィックな<a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a>の研究は1960年代から始められている。<a href="/wiki/%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%83%BC%E3%83%BB%E3%82%B9%E3%83%88%E3%83%AC%E3%82%A4%E3%83%81%E3%83%BC" title="クリストファー・ストレイチー">クリストファー・ストレイチー</a>の1967年論文<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=Fundamental_Concepts_in_Programming_Languages&amp;action=edit&amp;redlink=1" class="new" title="「Fundamental Concepts in Programming Languages」 (存在しないページ)">Fundamental Concepts in Programming Languages</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Fundamental_Concepts_in_Programming_Languages" class="extiw" title="en:Fundamental Concepts in Programming Languages">英語版</a>)</span></span>で、アドホック多相とパラメトリック多相という概念が初めて提唱されている<sup id="cite_ref-Strachey_7-0" class="reference"><a href="#cite_note-Strachey-7"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup>。アドホック多相は<a href="/wiki/ALGOL" title="ALGOL">「ALGOL68</a>」で実践され、パラメトリック多相は「<a href="/wiki/ML_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)" title="ML (プログラミング言語)">ML</a>」の型システムで実践された。 1985年に<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%94%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%BB%E3%82%A6%E3%82%A7%E3%82%B0%E3%83%8A%E3%83%BC&amp;action=edit&amp;redlink=1" class="new" title="「ピーター・ウェグナー」 (存在しないページ)">ピーター・ウェグナー</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Peter_Wegner" class="extiw" title="en:Peter Wegner">英語版</a>)</span></span>と<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%AB%E3%82%AB%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%87%E3%83%AA&amp;action=edit&amp;redlink=1" class="new" title="「ルカ・カーデリ」 (存在しないページ)">ルカ・カーデリ</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Luca_Cardelli" class="extiw" title="en:Luca Cardelli">英語版</a>)</span></span>は「<a href="/wiki/Simula" title="Simula">Simula67</a>」の<a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a>+動的ディスパッチを説明するためのインクルージョン多相という概念を提唱した<sup id="cite_ref-Luca_8-0" class="reference"><a href="#cite_note-Luca-8"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup>。これとストレイチー提唱の二つを合わせて三本柱にした概念が、ポリモーフィズムと呼ばれるようになっている。 </p><p>1989年に<a href="/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="オブジェクト指向プログラミング">オブジェクト指向</a>の<a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a>を説明するための<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%AD%E3%83%BC%E5%A4%9A%E7%9B%B8&amp;action=edit&amp;redlink=1" class="new" title="「ロー多相」 (存在しないページ)">ロー多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Row_polymorphism" class="extiw" title="en:Row polymorphism">英語版</a>)</span></span>という概念が<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%9F%E3%83%83%E3%83%81%E3%82%A7%E3%83%AB%E3%83%BB%E3%83%AF%E3%83%B3%E3%83%89&amp;action=edit&amp;redlink=1" class="new" title="「ミッチェル・ワンド」 (存在しないページ)">ミッチェル・ワンド</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Mitchell_Wand" class="extiw" title="en:Mitchell Wand">英語版</a>)</span></span>の著作で提唱されているが、知名度は低い。同年にパラメトリック多相をモチーフにした<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%83%83%E3%82%AF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="ジェネリックプログラミング">ジェネリックプログラミング</a>が<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%82%A2%E3%83%AC%E3%82%AF%E3%82%B5%E3%83%B3%E3%83%80%E3%83%BC%E3%83%BB%E3%82%B9%E3%83%86%E3%83%91%E3%83%8E%E3%83%95&amp;action=edit&amp;redlink=1" class="new" title="「アレクサンダー・ステパノフ」 (存在しないページ)">アレクサンダー・ステパノフ</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Alexander_Stepanov" class="extiw" title="en:Alexander Stepanov">英語版</a>)</span></span>らの著作で提唱され、これはポリタイピズムとも呼ばれた<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">&#91;</span>注釈 2<span class="cite-bracket">&#93;</span></a></sup>。 </p><p>1980年代の「<a href="/wiki/Ada" title="Ada">Ada</a>」は<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9" class="mw-redirect" title="ジェネリクス">ジェネリクス</a>に型制約と称する<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E6%9C%89%E7%95%8C%E9%87%8F%E5%8C%96&amp;action=edit&amp;redlink=1" class="new" title="「有界量化」 (存在しないページ)">有界量化</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Bounded_quantification" class="extiw" title="en:Bounded quantification">英語版</a>)</span></span>の概念を採用した。1990年代の「<a href="/wiki/Haskell" title="Haskell">Haskell</a>」はアドホック多相とジェネリクスを融合した<a href="/wiki/%E5%9E%8B%E3%82%AF%E3%83%A9%E3%82%B9" title="型クラス">型クラス</a>を考案している。2003年の「<a href="/wiki/Scala" title="Scala">Scala</a>」は<a href="/wiki/%E3%82%B5%E3%83%96%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="サブタイピング (計算機科学)">サブタイピング</a>+<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9" class="mw-redirect" title="ジェネリクス">ジェネリクス</a>に<a href="/wiki/%E5%85%B1%E5%A4%89%E6%80%A7%E3%81%A8%E5%8F%8D%E5%A4%89%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="共変性と反変性 (計算機科学)">共変性と反変性</a>を導入した。 </p> <div class="mw-heading mw-heading2"><h2 id="ポリモーフィズムの種類"><span id=".E3.83.9D.E3.83.AA.E3.83.A2.E3.83.BC.E3.83.95.E3.82.A3.E3.82.BA.E3.83.A0.E3.81.AE.E7.A8.AE.E9.A1.9E"></span>ポリモーフィズムの種類</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=2" title="節を編集: ポリモーフィズムの種類"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="アドホック多相"><span id=".E3.82.A2.E3.83.89.E3.83.9B.E3.83.83.E3.82.AF.E5.A4.9A.E7.9B.B8"></span>アドホック多相</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=3" title="節を編集: アドホック多相"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%82%A2%E3%83%89%E3%83%9B%E3%83%83%E3%82%AF%E5%A4%9A%E7%9B%B8&amp;action=edit&amp;redlink=1" class="new" title="「アドホック多相」 (存在しないページ)">アドホック多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Ad_hoc_polymorphism" class="extiw" title="en:Ad hoc polymorphism">英語版</a>)</span></span>」を参照</div> <p>関数や演算子の多重定義のように、同じ名前で型の異なる引数に適用できて、その振る舞いは引数の型によって違うような関数の多相性のことを「アドホック多相」という。「ad hoc(その場しのぎの)」という用語は悪い意味で使われているのではなく、単にこの種の多相性が型システムの基本的な機能ではないという事実を指して使われている。次の<a href="/wiki/C%2B%2B" title="C++">C++</a>での例では、<code>Add</code>関数は呼び出し側からは様々な型に対して総称的に動作するかのように見えるが、コンパイラから見ればこれらは全く別個の2つの関数である。 </p> <div class="mw-highlight mw-highlight-lang-c++ mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;string&gt;</span> <span class="kt">int</span><span class="w"> </span><span class="nf">Add</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> <span class="p">}</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="nf">Add</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span><span class="w"> </span><span class="n">s1</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span><span class="w"> </span><span class="n">s2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">s1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">s2</span><span class="p">;</span> <span class="p">}</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">// &quot;3&quot; が出力される。</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Add</span><span class="p">(</span><span class="s">&quot;Hello, &quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;World!&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">// &quot;Hello, World!&quot; が出力される。</span> <span class="p">}</span> </pre></div> <p>動的型付け言語では、実行されるべき正しい関数が実行時まで決定できない可能性があるという点で、状況はより複雑になりうる。暗黙の型変換も型強制多相(coercion polymorphism)としてアドホック多相の一形態と定義される<sup id="cite_ref-Luca_8-1" class="reference"><a href="#cite_note-Luca-8"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-Tucker2004_10-0" class="reference"><a href="#cite_note-Tucker2004-10"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup>。 </p> <div class="mw-heading mw-heading3"><h3 id="パラメトリック多相"><span id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.88.E3.83.AA.E3.83.83.E3.82.AF.E5.A4.9A.E7.9B.B8"></span>パラメトリック多相</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=4" title="節を編集: パラメトリック多相"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%91%E3%83%A9%E3%83%A1%E3%83%88%E3%83%AA%E3%83%83%E3%82%AF%E5%A4%9A%E7%9B%B8&amp;action=edit&amp;redlink=1" class="new" title="「パラメトリック多相」 (存在しないページ)">パラメトリック多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Parametric_polymorphism" class="extiw" title="en:Parametric polymorphism">英語版</a>)</span></span>」を参照</div> <p>パラメトリック多相を使うと、値の型に関係なく「一様に」値を扱うことで、関数やデータ型を総称的に記述できるようになる<sup id="cite_ref-bjpierce_11-0" class="reference"><a href="#cite_note-bjpierce-11"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup>。パラメトリック多相は言語の静的な型安全性を保ちながら表現力を向上させる手法のひとつである。 </p><p>パラメトリック多相の概念は関数とデータ型の両方に適用される。異なる型の値に対して評価、適用可能な関数のことを「多相な関数」という。総称化された型とみなすことができるデータ型(例えば任意の型の要素を持てるリスト)は「多相なデータ型」という。 </p><p>パラメトリック多相性は関数型プログラミングの分野では至るところに現れるため、しばしば単に「多相性」と言われることがある。次の<a href="/wiki/Haskell" title="Haskell">Haskell</a>の例ではパラメータ化されたリストと2つの<i>パラメトリック</i>多相な関数を示す。 </p> <div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">data</span><span class="w"> </span><span class="kt">List</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="kt">Nil</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kt">Cons</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">(</span><span class="kt">List</span><span class="w"> </span><span class="n">a</span><span class="p">)</span> <span class="nf">length</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">List</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">Integer</span> <span class="nf">length</span><span class="w"> </span><span class="kt">Nil</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="mi">0</span> <span class="nf">length</span><span class="w"> </span><span class="p">(</span><span class="kt">Cons</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">xs</span><span class="p">)</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">length</span><span class="w"> </span><span class="n">xs</span> <span class="nf">map</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">List</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">List</span><span class="w"> </span><span class="n">b</span> <span class="nf">map</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="kt">Nil</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="kt">Nil</span> <span class="nf">map</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="p">(</span><span class="kt">Cons</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">xs</span><span class="p">)</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="kt">Cons</span><span class="w"> </span><span class="p">(</span><span class="n">f</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="n">map</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">xs</span><span class="p">)</span> </pre></div> <p>パラメトリック多相は様々なオブジェクト指向言語でも利用できる。例えばC++やD言語の<a href="/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="テンプレート (プログラミング)">テンプレート</a>、JavaやC#の<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9" class="mw-redirect" title="ジェネリクス">ジェネリクス</a>などである。 </p> <div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">List</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Node</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">elem</span><span class="p">;</span> <span class="w"> </span><span class="n">Node</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="n">next</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">Node</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="n">head</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">GetLength</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">B</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Map</span><span class="p">(</span><span class="n">Func</span><span class="o">&lt;</span><span class="n">A</span><span class="p">,</span><span class="w"> </span><span class="n">B</span><span class="o">&gt;</span><span class="w"> </span><span class="n">f</span><span class="p">,</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">A</span><span class="o">&gt;</span><span class="w"> </span><span class="n">xs</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="p">...</span> <span class="p">}</span> </pre></div> <p><a href="/wiki/%E3%82%B8%E3%83%A3%E3%83%B3%EF%BC%9D%E3%82%A4%E3%83%B4%E3%83%BB%E3%82%B8%E3%83%A9%E3%83%BC%E3%83%AB" title="ジャン=イヴ・ジラール">ジャン=イヴ・ジラール</a>と<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=John_C._Reynolds&amp;action=edit&amp;redlink=1" class="new" title="「John C. Reynolds」 (存在しないページ)">John C. Reynolds</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/John_C._Reynolds" class="extiw" title="en:John C. Reynolds">英語版</a>)</span></span>は、それぞれ独立に、パラメトリック多相の概念をラムダ計算の拡張(<a href="/wiki/System_F" title="System F">System F</a>や多相ラムダ計算と呼ばれる)として形式的に発展させた。 </p> <div class="mw-heading mw-heading3"><h3 id="サブタイピング"><span id=".E3.82.B5.E3.83.96.E3.82.BF.E3.82.A4.E3.83.94.E3.83.B3.E3.82.B0"></span>サブタイピング</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=5" title="節を編集: サブタイピング"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<a href="/wiki/%E3%82%B5%E3%83%96%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="サブタイピング (計算機科学)">サブタイピング (計算機科学)</a>」を参照</div> <p>いくつかのプログラミング言語では、特定の多相性の状況において使用できる型の範囲を制限するためにサブタイピングを採用している。サブタイピングを使用すると、ある型<code>T</code>のオブジェクトを受け取る関数は、<code>T</code>のサブタイプである型<code>S</code>のオブジェクトを渡された場合でも正しく動作する(<a href="/wiki/%E3%83%AA%E3%82%B9%E3%82%B3%E3%83%95%E3%81%AE%E7%BD%AE%E6%8F%9B%E5%8E%9F%E5%89%87" title="リスコフの置換原則">リスコフの置換原則</a>)。この型の関係性はしばしば<code>S &lt;: T</code>と表記される。一般的にサブタイプ多相=インクルージョン多相は動的に解決される(後述)。 </p><p>次のJavaの例では<code>Animal</code>のサブタイプとして<code>Cat</code>と<code>Dog</code>を用意する。メソッド<code>letsHear()</code>は<code>Animal</code>型の引数を受け取るが、そのサブタイプの引数を渡しても問題なく動作する。 </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">abstract</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Animal</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">abstract</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">talk</span><span class="p">();</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Cat</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Animal</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">talk</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">&quot;Meow!&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Dog</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Animal</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">talk</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">&quot;Woof!&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Test</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">letsHear</span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">Animal</span><span class="w"> </span><span class="n">a</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">a</span><span class="p">.</span><span class="na">talk</span><span class="p">());</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">letsHear</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Cat</span><span class="p">());</span> <span class="w"> </span><span class="n">letsHear</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Dog</span><span class="p">());</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>オブジェクト指向言語は<a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a>によってサブタイピングを提供する。典型的な実装では、各クラスはそれぞれ<a href="/wiki/%E4%BB%AE%E6%83%B3%E9%96%A2%E6%95%B0%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB" title="仮想関数テーブル">仮想関数テーブル</a>(vtable)と呼ばれる関数のテーブルを持ち、各オブジェクトは自らのクラスのvtableへのポインタを持つ。多相なメソッドを呼び出すときには、このvtableを参照する。 </p><p>多くのオブジェクト指向言語では、仮想関数の呼び出しに1番目の引数(<code><a href="/wiki/This_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="This (プログラミング)">this</a></code>オブジェクト)の vtable だけを参照する<a href="/w/index.php?title=%E5%8D%98%E4%B8%80%E3%83%87%E3%82%A3%E3%82%B9%E3%83%91%E3%83%83%E3%83%81&amp;action=edit&amp;redlink=1" class="new" title="「単一ディスパッチ」 (存在しないページ)">単一ディスパッチ</a>を採用している。つまりその他の引数の実行時の型は仮想関数の呼び出しに全く無関係である。一方で<a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp</a>などでは、メソッドの呼び出しが「全ての」引数に対して多相的となる<a href="/wiki/%E5%A4%9A%E9%87%8D%E3%83%87%E3%82%A3%E3%82%B9%E3%83%91%E3%83%83%E3%83%81" title="多重ディスパッチ">多重ディスパッチ</a>を採用している。 </p> <div class="mw-heading mw-heading3"><h3 id="ロー多相"><span id=".E3.83.AD.E3.83.BC.E5.A4.9A.E7.9B.B8"></span>ロー多相</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=6" title="節を編集: ロー多相"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101304250"><table class="box-出典の明記 plainlinks metadata ambox mbox-small-left ambox-content ambox-出典の明記" role="presentation" style="width:auto;"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/50px-Question_book-4.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/75px-Question_book-4.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/100px-Question_book-4.svg.png 2x" data-file-width="262" data-file-height="204" /></span></span></td><td class="mbox-text"><div class="mbox-text-span"><b>この節は<a href="/wiki/Wikipedia:%E6%A4%9C%E8%A8%BC%E5%8F%AF%E8%83%BD%E6%80%A7" title="Wikipedia:検証可能性">検証可能</a>な<a href="/wiki/Wikipedia:%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1%E6%BA%90" title="Wikipedia:信頼できる情報源">参考文献や出典</a>が全く示されていないか、不十分です。</b><span class="hide-when-compact"> <a href="/wiki/Wikipedia:%E5%87%BA%E5%85%B8%E3%82%92%E6%98%8E%E8%A8%98%E3%81%99%E3%82%8B" title="Wikipedia:出典を明記する">出典を追加</a>して記事の信頼性向上にご協力ください。<small>(<a href="/wiki/Template:%E5%87%BA%E5%85%B8%E3%81%AE%E6%98%8E%E8%A8%98/doc" title="Template:出典の明記/doc">このテンプレートの使い方</a>)</small><br /><small><span class="plainlinks">出典検索<a href="/wiki/Template:Find_sources_mainspace" title="Template:Find sources mainspace"><sup>?</sup></a>:&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;as_eq=wikipedia&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;num=50">"ポリモーフィズム"</a>&#160;–&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;tbm=nws">ニュース</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;tbs=bks:1&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">書籍</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//scholar.google.co.jp/scholar?num=100&amp;hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">スカラー</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ci.nii.ac.jp/opensearch/search?lang=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;range=2&amp;count=200&amp;sortorder=1&amp;type=0">CiNii</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.jstage.jst.go.jp/result/global/-char/ja?globalSearchKey=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">J-STAGE</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ndlsearch.ndl.go.jp/api/openurl?any=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">NDL</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://dlib.jp/?q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">dlib.jp</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://jpsearch.go.jp/csearch/jps-cross?csid=jps-cross&amp;keyword=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">ジャパンサーチ</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://wikipedialibrary.wmflabs.org/partners/">TWL</a></span></small></span> <span class="date-container"><i>(<span class="date"><span title="2021-10">2021年10月</span></span>)</i></span></div></td></tr></tbody></table> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E3%83%AD%E3%83%BC%E5%A4%9A%E7%9B%B8&amp;action=edit&amp;redlink=1" class="new" title="「ロー多相」 (存在しないページ)">ロー多相</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Row_polymorphism" class="extiw" title="en:Row polymorphism">英語版</a>)</span></span>」を参照</div> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E6%A7%8B%E9%80%A0%E7%9A%84%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0&amp;action=edit&amp;redlink=1" class="new" title="「構造的型システム」 (存在しないページ)">構造的型システム</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Structural_type_system" class="extiw" title="en:Structural type system">英語版</a>)</span></span>」も参照</div> <p>ロー多相は、<a href="/wiki/%E5%9E%8B%E7%90%86%E8%AB%96" title="型理論">型理論</a>におけるレコード型(record type)の<a href="/wiki/%E7%9B%B4%E7%A9%8D%E9%9B%86%E5%90%88" title="直積集合">直積的</a>または<a href="/wiki/%E7%B7%8F%E5%92%8C" title="総和">総和的</a>な可変長要素の構造分析から導き出された多態性であり、<a href="/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91" title="動的型付け">動的型付け</a>および<a href="/wiki/%E5%8B%95%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E" title="動的プログラミング言語">動的プログラミング</a>を説明できる<a href="/wiki/%E5%BD%A2%E5%BC%8F%E8%AB%96%E7%90%86%E5%AD%A6" title="形式論理学">形式論理</a>として紹介される。構造的型付け (structural typing) の多態性(多相性)はロー多相に分類されることがある<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup>。構造的型付けに類似した<a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" class="mw-redirect" title="ダックタイピング">ダックタイピング</a>の説明にも適している。 </p><p>日本語では行多相<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup>と訳されることもあれば、列多相<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">&#91;</span>12<span class="cite-bracket">&#93;</span></a></sup>と訳されることもある。 </p> <div class="mw-heading mw-heading3"><h3 id="ポリタイピズム"><span id=".E3.83.9D.E3.83.AA.E3.82.BF.E3.82.A4.E3.83.94.E3.82.BA.E3.83.A0"></span>ポリタイピズム</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=7" title="節を編集: ポリタイピズム"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101304250"><table class="box-出典の明記 plainlinks metadata ambox mbox-small-left ambox-content ambox-出典の明記" role="presentation" style="width:auto;"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/50px-Question_book-4.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/75px-Question_book-4.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/100px-Question_book-4.svg.png 2x" data-file-width="262" data-file-height="204" /></span></span></td><td class="mbox-text"><div class="mbox-text-span"><b>この節は<a href="/wiki/Wikipedia:%E6%A4%9C%E8%A8%BC%E5%8F%AF%E8%83%BD%E6%80%A7" title="Wikipedia:検証可能性">検証可能</a>な<a href="/wiki/Wikipedia:%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1%E6%BA%90" title="Wikipedia:信頼できる情報源">参考文献や出典</a>が全く示されていないか、不十分です。</b><span class="hide-when-compact"> <a href="/wiki/Wikipedia:%E5%87%BA%E5%85%B8%E3%82%92%E6%98%8E%E8%A8%98%E3%81%99%E3%82%8B" title="Wikipedia:出典を明記する">出典を追加</a>して記事の信頼性向上にご協力ください。<small>(<a href="/wiki/Template:%E5%87%BA%E5%85%B8%E3%81%AE%E6%98%8E%E8%A8%98/doc" title="Template:出典の明記/doc">このテンプレートの使い方</a>)</small><br /><small><span class="plainlinks">出典検索<a href="/wiki/Template:Find_sources_mainspace" title="Template:Find sources mainspace"><sup>?</sup></a>:&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;as_eq=wikipedia&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;num=50">"ポリモーフィズム"</a>&#160;–&#160;<a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;tbm=nws">ニュース</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//www.google.co.jp/search?hl=ja&amp;tbs=bks:1&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">書籍</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="//scholar.google.co.jp/scholar?num=100&amp;hl=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">スカラー</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ci.nii.ac.jp/opensearch/search?lang=ja&amp;q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22&amp;range=2&amp;count=200&amp;sortorder=1&amp;type=0">CiNii</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://www.jstage.jst.go.jp/result/global/-char/ja?globalSearchKey=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">J-STAGE</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://ndlsearch.ndl.go.jp/api/openurl?any=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">NDL</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://dlib.jp/?q=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">dlib.jp</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://jpsearch.go.jp/csearch/jps-cross?csid=jps-cross&amp;keyword=%22%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%22">ジャパンサーチ</a>&#160;<b>·</b> <a rel="nofollow" class="external text" href="https://wikipedialibrary.wmflabs.org/partners/">TWL</a></span></small></span> <span class="date-container"><i>(<span class="date"><span title="2021-10">2021年10月</span></span>)</i></span></div></td></tr></tbody></table> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<a href="/wiki/%E7%B7%8F%E7%A7%B0%E5%9E%8B" class="mw-redirect" title="総称型">総称型</a>」を参照</div> <p>ポリタイピズムは、パラメトリック多相の亜流と言えるものである。パラメトリック多相での型が型変数を内包するという概念を、ポリタイピズムでは型が包装型を着脱するという概念に置き換えている。包装型=<a href="/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A_(%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B)" title="コンテナ (データ型)">コンテナ</a>である。コンテナの着脱は<a href="/wiki/%E5%9C%8F%E8%AB%96" title="圏論">圏論</a>での<a href="/wiki/%E9%96%A2%E6%89%8B" title="関手">関手</a>に類似している。ポリタイピズムは、<a href="/wiki/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%83%83%E3%82%AF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="ジェネリックプログラミング">ジェネリックプログラミング</a>を説明する多態性として扱われている。 </p> <div class="mw-heading mw-heading2"><h2 id="ポリモーフィズムの実装的側面"><span id=".E3.83.9D.E3.83.AA.E3.83.A2.E3.83.BC.E3.83.95.E3.82.A3.E3.82.BA.E3.83.A0.E3.81.AE.E5.AE.9F.E8.A3.85.E7.9A.84.E5.81.B4.E9.9D.A2"></span>ポリモーフィズムの実装的側面</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=8" title="節を編集: ポリモーフィズムの実装的側面"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="静的な多態性と動的な多態性"><span id=".E9.9D.99.E7.9A.84.E3.81.AA.E5.A4.9A.E6.85.8B.E6.80.A7.E3.81.A8.E5.8B.95.E7.9A.84.E3.81.AA.E5.A4.9A.E6.85.8B.E6.80.A7"></span>静的な多態性と動的な多態性</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=9" title="節を編集: 静的な多態性と動的な多態性"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="rellink" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%;" role="note">→詳細は「<a href="/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0#静的ポリモーフィズム" title="テンプレートメタプログラミング">テンプレートメタプログラミング#静的ポリモーフィズム</a>」、「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E9%81%85%E5%BB%B6%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0&amp;action=edit&amp;redlink=1" class="new" title="「遅延バインディング」 (存在しないページ)">遅延バインディング</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Late_binding" class="extiw" title="en:Late binding">英語版</a>)</span></span>」、および「<span title="リンク先の項目はまだありません。新規の執筆や他言語版からの翻訳が望まれます。"><a href="/w/index.php?title=%E5%8B%95%E7%9A%84%E3%83%87%E3%82%A3%E3%82%B9%E3%83%91%E3%83%83%E3%83%81&amp;action=edit&amp;redlink=1" class="new" title="「動的ディスパッチ」 (存在しないページ)">動的ディスパッチ</a><span style="font-size: 0.77em; font-weight: normal;" class="noprint">(<a href="https://en.wikipedia.org/wiki/Dynamic_dispatch" class="extiw" title="en:Dynamic dispatch">英語版</a>)</span></span>」を参照</div> <p>ポリモーフィズムは実装がいつ選択されるかによって、静的(コンパイル時)か動的(実行時)かに区別できる。これはそれぞれ静的ディスパッチおよび動的ディスパッチとして知られ、さらにこれらに対応するポリモーフィズムはそれぞれ静的ポリモーフィズムおよび動的ポリモーフィズムと呼ばれる。後者は典型的には仮想関数などを通して実現される。 </p><p>動的ディスパッチのオーバーヘッドが無いため、静的ポリモーフィズムはより高速に実行できるが、追加的なコンパイラの補助を必要とする。静的ポリモーフィズムではコンパイラやソースコード解析ツール、プログラマの目視による、より広範な静的解析(特に最適化)が可能となる。動的ポリモーフィズムはより柔軟だが速度はより遅くなる。例えば動的ディスパッチでは<a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ダック・タイピング">ダック・タイピング</a>が可能で、動的にリンクされたライブラリはオブジェクトの型を知らなくても動作できるだろう。 </p><p>典型的にはアドホック多相とパラメトリック多相は静的ポリモーフィズムとして動作し、サブタイプ多相は動的ポリモーフィズムとして動作する。しかし、<a href="/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0#静的ポリモーフィズム" title="テンプレートメタプログラミング">奇妙に再帰したテンプレートパターン</a>のような洗練されたテンプレートメタプログラミングを通して、サブタイプ多相で静的ポリモーフィズムを実現することも可能である。 </p> <div class="mw-heading mw-heading2"><h2 id="単態性と多態性"><span id=".E5.8D.98.E6.85.8B.E6.80.A7.E3.81.A8.E5.A4.9A.E6.85.8B.E6.80.A7"></span>単態性と多態性</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=10" title="節を編集: 単態性と多態性"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>ポリモーフィズムの対義語として<b>モノモーフィズム</b>(monomorphism、単態性、単相性)という言葉が使われることがある。 </p><p>モノモーフィックな型システムを持つプログラミング言語では、<a href="/wiki/%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3" title="サブルーチン">サブルーチン</a>(言語によっては関数や<a href="/wiki/%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3" title="プロシージャ">手続き</a>とも呼ばれる)はそれぞれ一意に識別される名前(<a href="/wiki/%E8%AD%98%E5%88%A5%E5%AD%90" title="識別子">識別子</a>)と結びついており、従って異なる動作を実現するためには異なる名前を用いる必要があった。 </p><p>例えば、何かの値を文字列形式に変換する最も単純な場合を考える。モノモーフィックな型システムを持つ言語では、次のように別々の関数になっていなければならない。 </p> <dl><dd>古典的な変換関数: <dl><dd>数値を文字列にする場合</dd></dl></dd></dl> <pre>string = StringFromNumber(number) </pre> <dl><dd><dl><dd>日付値を文字列にする場合</dd></dl></dd></dl> <pre>string = StringFromDate(date) </pre> <p>一方ポリモーフィックな型システムを持つ言語では、StringValue のような汎用の述語を定義し、型別にそれぞれ適切な変換方式を定義させることでオブジェクトの種別によらない抽象度の高い変換形式を実現できる。 </p> <dl><dd>多態的な変換方式: <dl><dd>見た目上、型によらない変換が可能</dd></dl></dd></dl> <pre>string = number.StringValue string = date.StringValue </pre> <p>関数オーバーロードをサポートする言語では、共通の名前を持ち、引数の型だけが異なる StringFrom のような関数を定義することもできる。 </p> <pre>string = StringFrom(number) string = StringFrom(date) </pre> <p>無論、StringValueやStringFromの定義は型ごとに行なわなければならないので、<b>総体として記述量が減少するとは限らない</b>(<a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a>やジェネリックプログラミングによるコードの再利用はありうる)。また、何をもって「正しい動作」とするのかはオブジェクトの設計に依存するため、多態を使いこなすにはシステム全体を見通す設計能力が要求される。 </p> <div class="mw-heading mw-heading2"><h2 id="注釈"><span id=".E6.B3.A8.E9.87.88"></span>注釈</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=11" title="節を編集: 注釈"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="reflist" style="list-style-type: decimal;"> <ol class="references"> <li id="cite_note-6"><b><a href="#cite_ref-6">^</a></b> <span class="reference-text">polytypismは他の分野で「多型性」と邦訳されることがある<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup>。</span> </li> <li id="cite_note-9"><b><a href="#cite_ref-9">^</a></b> <span class="reference-text">ポリタイピックプログラミング(polytypic programming)はジェネリックプログラミングと同一視されることがある。<a rel="nofollow" class="external text" href="https://link.springer.com/chapter/10.1007/978-3-540-27861-0_11">Polytypic Programming in Haskell | SpringerLink</a></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="出典"><span id=".E5.87.BA.E5.85.B8"></span>出典</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=12" title="節を編集: 出典"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="reflist" style="list-style-type: decimal;"> <ol class="references"> <li id="cite_note-1"><b><a href="#cite_ref-1">^</a></b> <span class="reference-text"><cite class="citation web" style="font-style:normal">Bjarne Stroustrup&#32;(February 19, 2007).&#32;“<a rel="nofollow" class="external text" href="http://www.stroustrup.com/glossary.html#Gpolymorphism">Bjarne Stroustrup's C++ Glossary</a>”.&#32;<span title="">2017年3月8日</span>閲覧。&#160;“polymorphism – providing a single interface to entities of different types.”</cite></span> </li> <li id="cite_note-Luca2-2"><b><a href="#cite_ref-Luca2_2-0">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation journal">Cardelli,&#32;Luca&#59;&#32;Wegner,&#32;Peter&#32;(December 1985).&#32;<a rel="nofollow" class="external text" href="http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf">“On understanding types, data abstraction, and polymorphism”</a>.&#32;<i><a href="/w/index.php?title=ACM_Computing_Surveys&amp;action=edit&amp;redlink=1" class="new" title="「ACM Computing Surveys」 (存在しないページ)">ACM Computing Surveys</a></i>&#32;<b>17</b>&#32;(4): 471–523.&#32;<a href="/wiki/Doi_(%E8%AD%98%E5%88%A5%E5%AD%90)" class="mw-redirect" title="Doi (識別子)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F6041.6042">10.1145/6041.6042</a><span style="display:none;">.&#32;<a rel="nofollow" class="external free" href="http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf">http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf</a></span>.</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=On+understanding+types%2C+data+abstraction%2C+and+polymorphism&amp;rft.jtitle=%5B%5BACM+Computing+Surveys%5D%5D&amp;rft.aulast=Cardelli&amp;rft.aufirst=Luca&amp;rft.au=Cardelli%2C%26%2332%3BLuca&amp;rft.au=Wegner%2C%26%2332%3BPeter&amp;rft.date=December+1985&amp;rft.volume=17&amp;rft.issue=4&amp;rft.pages=471%E2%80%93523&amp;rft_id=info:doi/10.1145%2F6041.6042&amp;rft_id=http%3A%2F%2Flucacardelli.name%2FPapers%2FOnUnderstanding.A4.pdf&amp;rfr_id=info:sid/ja.wikipedia.org:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span style="display: none;">&#160;</span></span>: "Polymorphic types are types whose operations are applicable to values of more than one type."</span> </li> <li id="cite_note-Moved-3"><b><a href="#cite_ref-Moved_3-0">^</a></b> <span class="reference-text"><cite class="citation web" style="font-style:normal">“<a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html">Polymorphism</a>”.&#32;<i>The Java™ Tutorials: Learning the Java Language: Interfaces and Inheritance</i>.&#32; Oracle.&#32;<span title="">2021年9月8日</span>閲覧。</cite></span> </li> <li id="cite_note-gbooch-4"><b><a href="#cite_ref-gbooch_4-0">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation book">Conallen,&#32;J.&#59;&#32;Engle,&#32;M.&#59;&#32;Houston,&#32;K.&#59;&#32;Maksimchuk,&#32;R.&#59;&#32;Young,&#32;B.&#59;&#32;<a href="/w/index.php?title=Grady_Booch&amp;action=edit&amp;redlink=1" class="new" title="「Grady Booch」 (存在しないページ)">Booch,&#32;G.</a>&#32;(2007).&#32;<i>Object-Oriented Analysis and Design with Applications</i>&#32;(3rd ed.).&#32;Pearson Education.&#32;<style data-mw-deduplicate="TemplateStyles:r101121245">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:var(--color-success,#3a3);margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}</style><a href="/wiki/ISBN" title="ISBN">ISBN</a>&#160;<a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/9780132797443" title="特別:文献資料/9780132797443">9780132797443</a></cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Object-Oriented+Analysis+and+Design+with+Applications&amp;rft.aulast=Conallen&amp;rft.aufirst=J.&amp;rft.au=Conallen%2C%26%2332%3BJ.&amp;rft.au=Engle%2C%26%2332%3BM.&amp;rft.au=Houston%2C%26%2332%3BK.&amp;rft.au=Maksimchuk%2C%26%2332%3BR.&amp;rft.au=Young%2C%26%2332%3BB.&amp;rft.au=Booch%2C%26%2332%3BG.&amp;rft.date=2007&amp;rft.edition=3rd&amp;rft.pub=Pearson+Education&amp;rft.isbn=9780132797443&amp;rfr_id=info:sid/ja.wikipedia.org:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span style="display: none;">&#160;</span></span></span> </li> <li id="cite_note-5"><b><a href="#cite_ref-5">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation journal">重和,&#32;樋口「<a rel="nofollow" class="external text" href="https://cir.nii.ac.jp/crid/1390001204456686464">光の非視覚的作用と概日リズム&#160;: 生理的多型性へのアプローチ(生理人類学のキーワード"生理的多型性"の本質に迫る)</a>」『日本生理人類学会誌』第18巻第1号、2013年、39–43頁、<a href="/wiki/Doi_(%E8%AD%98%E5%88%A5%E5%AD%90)" class="mw-redirect" title="Doi (識別子)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.20718%2Fjjpa.18.1_39">10.20718/jjpa.18.1_39</a>。</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=%E5%85%89%E3%81%AE%E9%9D%9E%E8%A6%96%E8%A6%9A%E7%9A%84%E4%BD%9C%E7%94%A8%E3%81%A8%E6%A6%82%E6%97%A5%E3%83%AA%E3%82%BA%E3%83%A0+%3A+%E7%94%9F%E7%90%86%E7%9A%84%E5%A4%9A%E5%9E%8B%E6%80%A7%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81%28%E7%94%9F%E7%90%86%E4%BA%BA%E9%A1%9E%E5%AD%A6%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%22%E7%94%9F%E7%90%86%E7%9A%84%E5%A4%9A%E5%9E%8B%E6%80%A7%22%E3%81%AE%E6%9C%AC%E8%B3%AA%E3%81%AB%E8%BF%AB%E3%82%8B%29&amp;rft.jtitle=%E6%97%A5%E6%9C%AC%E7%94%9F%E7%90%86%E4%BA%BA%E9%A1%9E%E5%AD%A6%E4%BC%9A%E8%AA%8C&amp;rft.aulast=%E9%87%8D%E5%92%8C&amp;rft.aufirst=%E6%A8%8B%E5%8F%A3&amp;rft.au=%E9%87%8D%E5%92%8C%2C%26%2332%3B%E6%A8%8B%E5%8F%A3&amp;rft.date=2013&amp;rft.volume=18&amp;rft.issue=1&amp;rft.pages=39%E2%80%9343%E9%A0%81&amp;rft_id=info:doi/10.20718%2Fjjpa.18.1_39&amp;rft_id=https%3A%2F%2Fcir.nii.ac.jp%2Fcrid%2F1390001204456686464&amp;rfr_id=info:sid/ja.wikipedia.org:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span style="display: none;">&#160;</span></span></span> </li> <li id="cite_note-Strachey-7"><b><a href="#cite_ref-Strachey_7-0">^</a></b> <span class="reference-text">C. Strachey – <i>Fundamental Concepts in Programming Languages</i> <a rel="nofollow" class="external free" href="http://www.itu.dk/courses/BPRD/E2009/fundamental-1967.pdf">http://www.itu.dk/courses/BPRD/E2009/fundamental-1967.pdf</a></span> </li> <li id="cite_note-Luca-8">^ <a href="#cite_ref-Luca_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Luca_8-1"><sup><i><b>b</b></i></sup></a> <span class="reference-text"><cite style="font-style:normal" class="citation journal" id="CITEREFCardelliWegner1985"><a href="/w/index.php?title=Luca_Cardelli&amp;action=edit&amp;redlink=1" class="new" title="「Luca Cardelli」 (存在しないページ)">Cardelli,&#32;Luca</a>&#59;&#32;<a href="/w/index.php?title=Peter_Wegner&amp;action=edit&amp;redlink=1" class="new" title="「Peter Wegner」 (存在しないページ)">Wegner,&#32;Peter</a>&#32;(December 1985).&#32;<a rel="nofollow" class="external text" href="http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf">“On understanding types, data abstraction, and polymorphism”</a>.&#32;<i><a href="/w/index.php?title=ACM_Computing_Surveys&amp;action=edit&amp;redlink=1" class="new" title="「ACM Computing Surveys」 (存在しないページ)">ACM Computing Surveys</a></i>&#32;(New York, NY, USA: <a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM</a>)&#32;<b>17</b>&#32;(4): 471–523.&#32;<a href="/wiki/Doi_(%E8%AD%98%E5%88%A5%E5%AD%90)" class="mw-redirect" title="Doi (識別子)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F6041.6042">10.1145/6041.6042</a>.&#32;<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101121245"><a href="/wiki/ISSN" title="ISSN">ISSN</a>&#160;<a rel="nofollow" class="external text" href="https://search.worldcat.org/ja/search?fq=x0:jrnl&amp;q=n2:0360-0300">0360-0300</a><span style="display:none;">.&#32;<a rel="nofollow" class="external free" href="http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf">http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf</a></span>.</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=On+understanding+types%2C+data+abstraction%2C+and+polymorphism&amp;rft.jtitle=%5B%5BACM+Computing+Surveys%5D%5D&amp;rft.aulast=Cardelli&amp;rft.aufirst=Luca&amp;rft.au=Cardelli%2C%26%2332%3BLuca&amp;rft.au=Wegner%2C%26%2332%3BPeter&amp;rft.date=December+1985&amp;rft.volume=17&amp;rft.issue=4&amp;rft.pages=471%E2%80%93523&amp;rft.place=New+York%2C+NY%2C+USA&amp;rft.pub=%5B%5BAssociation+for+Computing+Machinery%7CACM%5D%5D&amp;rft_id=info:doi/10.1145%2F6041.6042&amp;rft.issn=0360-0300&amp;rft_id=http%3A%2F%2Flucacardelli.name%2FPapers%2FOnUnderstanding.A4.pdf&amp;rfr_id=info:sid/ja.wikipedia.org:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span style="display: none;">&#160;</span></span></span> </li> <li id="cite_note-Tucker2004-10"><b><a href="#cite_ref-Tucker2004_10-0">^</a></b> <span class="reference-text"><cite style="font-style:normal" class="citation book">Allen B. Tucker&#32;(28 June 2004).&#32;<a rel="nofollow" class="external text" href="https://books.google.com/books?id=9IFMCsQJyscC&amp;pg=SA91-PA5"><i>Computer Science Handbook, Second Edition</i></a>.&#32;Taylor &amp; Francis.&#32;pp.&#160;91–.&#32;<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r101121245"><a href="/wiki/ISBN" title="ISBN">ISBN</a>&#160;<a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/978-1-58488-360-9" title="特別:文献資料/978-1-58488-360-9">978-1-58488-360-9</a><span style="display:none;">.&#32;<a rel="nofollow" class="external free" href="https://books.google.com/books?id=9IFMCsQJyscC&amp;pg=SA91-PA5">https://books.google.com/books?id=9IFMCsQJyscC&amp;pg=SA91-PA5</a></span></cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Computer+Science+Handbook%2C+Second+Edition&amp;rft.aulast=Allen+B.+Tucker&amp;rft.au=Allen+B.+Tucker&amp;rft.date=28+June+2004&amp;rft.pages=pp.%26nbsp%3B91%E2%80%93&amp;rft.pub=Taylor+%26+Francis&amp;rft.isbn=978-1-58488-360-9&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3D9IFMCsQJyscC%26pg%3DSA91-PA5&amp;rfr_id=info:sid/ja.wikipedia.org:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0"><span style="display: none;">&#160;</span></span></span> </li> <li id="cite_note-bjpierce-11"><b><a href="#cite_ref-bjpierce_11-0">^</a></b> <span class="reference-text">Pierce, B. C. 2002 <i>Types and Programming Languages.</i> MIT Press.</span> </li> <li id="cite_note-12"><b><a href="#cite_ref-12">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/~aldrich/courses/819/slides/rows.pdf">Objects and Aspects: Row Polymorphism | Neel Krishnaswami, Department of Computer Science, Carnegie Mellon University</a></span> </li> <li id="cite_note-13"><b><a href="#cite_ref-13">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="https://aratama.github.io/purescript/chapter05.html">実例によるPureScript</a></span> </li> <li id="cite_note-14"><b><a href="#cite_ref-14">^</a></b> <span class="reference-text"><a rel="nofollow" class="external text" href="http://proofcafe.org/~keigoi/pplss2012-ocaml.pdf">OCamlで構築するモダンWeb:型付きHTML5プログラミングの実際 | 有限会社ITプランニング | 今井 敬吾</a></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="関連項目"><span id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE"></span>関連項目</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;action=edit&amp;section=13" title="節を編集: 関連項目"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" title="型システム">型システム</a></li> <li><a href="/wiki/%E7%B7%8F%E7%A7%B0%E5%9E%8B" class="mw-redirect" title="総称型">総称型</a></li> <li><a href="/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9" title="多重定義">多重定義</a></li> <li><a href="/wiki/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%89" title="オーバーライド">オーバーライド</a></li> <li><a href="/wiki/%E4%BB%AE%E6%83%B3%E9%96%A2%E6%95%B0%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB" title="仮想関数テーブル">仮想関数テーブル</a></li> <li><a href="/wiki/%E5%A4%9A%E9%87%8D%E3%83%87%E3%82%A3%E3%82%B9%E3%83%91%E3%83%83%E3%83%81" title="多重ディスパッチ">多重ディスパッチ</a></li> <li><a href="/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0" title="ダック・タイピング">ダック・タイピング</a></li> <li><a href="/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)" title="継承 (プログラミング)">継承</a></li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐g2nql Cached time: 20241124124630 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.488 seconds Real time usage: 0.901 seconds Preprocessor visited node count: 9193/1000000 Post‐expand include size: 109330/2097152 bytes Template argument size: 16737/2097152 bytes Highest expansion depth: 33/100 Expensive parser function count: 21/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 40045/5000000 bytes Lua time usage: 0.119/10.000 seconds Lua memory usage: 3722954/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 822.655 1 -total 27.08% 222.758 2 Template:Reflist 16.55% 136.187 4 Template:Citation/core 16.46% 135.375 3 Template:Ambox 15.68% 129.010 1 Template:複数の問題 12.89% 106.079 2 Template:Cite_book 9.28% 76.340 6 Template:Citation/identifier 7.75% 63.735 3 Template:Cite_journal 7.55% 62.126 2 Template:ISBN2 7.05% 57.994 3 Template:Find_sources_mainspace --> <!-- Saved in parser cache with key jawiki:pcache:idhash:414811-0!canonical and timestamp 20241124124630 and revision id 98615556. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">「<a dir="ltr" href="https://ja.wikipedia.org/w/index.php?title=ポリモーフィズム&amp;oldid=98615556">https://ja.wikipedia.org/w/index.php?title=ポリモーフィズム&amp;oldid=98615556</a>」から取得</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA" title="特別:カテゴリ">カテゴリ</a>: <ul><li><a href="/wiki/Category:%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)" title="Category:ポリモーフィズム (計算機科学)">ポリモーフィズム (計算機科学)</a></li><li><a href="/wiki/Category:%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91" title="Category:オブジェクト指向">オブジェクト指向</a></li><li><a href="/wiki/Category:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%AE%E6%A6%82%E5%BF%B5" title="Category:プログラミング言語の概念">プログラミング言語の概念</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">隠しカテゴリ: <ul><li><a href="/wiki/Category:%E5%87%BA%E5%85%B8%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E8%A8%98%E4%BA%8B/2021%E5%B9%B410%E6%9C%88" title="Category:出典を必要とする記事/2021年10月">出典を必要とする記事/2021年10月</a></li><li><a href="/wiki/Category:%E7%8B%AC%E8%87%AA%E7%A0%94%E7%A9%B6%E3%81%AE%E9%99%A4%E5%8E%BB%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E8%A8%98%E4%BA%8B/2021%E5%B9%B410%E6%9C%88" title="Category:独自研究の除去が必要な記事/2021年10月">独自研究の除去が必要な記事/2021年10月</a></li><li><a href="/wiki/Category:%E5%87%BA%E5%85%B8%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E7%AF%80%E3%81%AE%E3%81%82%E3%82%8B%E8%A8%98%E4%BA%8B/2021%E5%B9%B410%E6%9C%88" title="Category:出典を必要とする節のある記事/2021年10月">出典を必要とする節のある記事/2021年10月</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> 最終更新 2023年12月27日 (水) 03:45 (日時は<a href="/wiki/%E7%89%B9%E5%88%A5:%E5%80%8B%E4%BA%BA%E8%A8%AD%E5%AE%9A#mw-prefsection-rendering" title="特別:個人設定">個人設定</a>で未設定ならば<a href="/wiki/%E5%8D%94%E5%AE%9A%E4%B8%96%E7%95%8C%E6%99%82" title="協定世界時">UTC</a>)。</li> <li id="footer-info-copyright">テキストは<a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja">クリエイティブ・コモンズ 表示-継承ライセンス</a>のもとで利用できます。追加の条件が適用される場合があります。詳細については<a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">利用規約</a>を参照してください。</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/ja">プライバシー・ポリシー</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">ウィキペディアについて</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:%E5%85%8D%E8%B2%AC%E4%BA%8B%E9%A0%85">免責事項</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">行動規範</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">開発者</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/ja.wikipedia.org">統計</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookieに関する声明</a></li> <li id="footer-places-mobileview"><a href="//ja.m.wikipedia.org/w/index.php?title=%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">モバイルビュー</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-ttbpv","wgBackendResponseTime":138,"wgPageParseReport":{"limitreport":{"cputime":"0.488","walltime":"0.901","ppvisitednodes":{"value":9193,"limit":1000000},"postexpandincludesize":{"value":109330,"limit":2097152},"templateargumentsize":{"value":16737,"limit":2097152},"expansiondepth":{"value":33,"limit":100},"expensivefunctioncount":{"value":21,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":40045,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 822.655 1 -total"," 27.08% 222.758 2 Template:Reflist"," 16.55% 136.187 4 Template:Citation/core"," 16.46% 135.375 3 Template:Ambox"," 15.68% 129.010 1 Template:複数の問題"," 12.89% 106.079 2 Template:Cite_book"," 9.28% 76.340 6 Template:Citation/identifier"," 7.75% 63.735 3 Template:Cite_journal"," 7.55% 62.126 2 Template:ISBN2"," 7.05% 57.994 3 Template:Find_sources_mainspace"]},"scribunto":{"limitreport-timeusage":{"value":"0.119","limit":"10.000"},"limitreport-memusage":{"value":3722954,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-g2nql","timestamp":"20241124124630","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0","url":"https:\/\/ja.wikipedia.org\/wiki\/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0","sameAs":"http:\/\/www.wikidata.org\/entity\/Q3240252","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q3240252","author":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u8ca2\u732e\u8005"},"publisher":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u8ca1\u56e3","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2006-01-07T14:21:10Z","dateModified":"2023-12-27T03:45:28Z"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10