56 lines
2.6 KiB
HTML
56 lines
2.6 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
|
</object>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
|
<title></title>
|
|
<link rel="StyleSheet" href="../../default.css">
|
|
</head>
|
|
|
|
<body>
|
|
<H1>Ðåàëèçàöèÿ íåñêîëüêèõ èíòåðôåéñîâ </H1>
|
|
<p>Íåñêîëüêî èíòåðôåéñîâ ìîãóò ñîäåðæàòü îäèíàêîâûå ìåòîäû èëè
|
|
ñâîéñòâà. Ïðè íàñëåäîâàíèè îò òàêèõ èíòåðôåéñîâ òàêèå îäèíàêîâûå ìåòîäû èëè
|
|
ñâîéñòâà ñëèâàþòñÿ â îäèí:</p>
|
|
<blockquote>
|
|
<p><code><b>type</b><br>
|
|
IShape = <b>interface</b><br>
|
|
<b>procedure</b> Draw;<br> <b>property</b> X: integer <b>read</b>;<br>
|
|
<b>property</b> Y: integer <b>read</b>;<br>
|
|
<b>end</b>;<br>
|
|
IBrush = <b>interface</b><br>
|
|
<b>procedure</b> Draw;<br> <b>property</b>
|
|
Size: integer <b>read</b>;<br>
|
|
<b>end</b>;<br>
|
|
Brush = <b>class</b>(IShape,IBrush)<br>
|
|
|
|
<b>procedure</b> Draw;<br> <strong>begin</strong><br>
|
|
<strong>end</strong>;<br> <b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p>×òîáû ðåøèòü ïðîáëåìó ñ îäèíàêîâûìè èìåíàìè â èíòåðôåéñàõ, â .NET êëàññû
|
|
ìîãóò ðåàëèçîâûâàòü ìåòîäû èíòåðôåéñîâ òàê íàçûâàåìûì <strong>ÿâíûì</strong>
|
|
îáðàçîì, òàê ÷òî âûçîâ ìåòîäà èíòåðôåéñà äëÿ ïåðåìåííîé êëàññà âîçìîæåí òîëüêî
|
|
ïîñëå ÿâíîãî ïðèâåäåíèÿ ê òèïó èíòåðôåéñà. <span id="nsrTitle">Íàïðèìåð:</span></p>
|
|
<blockquote>
|
|
<p><code><strong>type</strong><br> IWindow = <strong>interface</strong><br>
|
|
procedure Menu;<br> <strong>end</strong>;<br> IRestaurant =
|
|
<strong>interface</strong><br> procedure Menu;<br>
|
|
<strong>end</strong>;<br> RestaurantSystem = <strong>class</strong>(IWindow,IRestaurant)<br>
|
|
<strong>public</strong><br> <strong>procedure</strong>
|
|
IWindow.Menu; // ÿâíàÿ ðåàëèçàöèÿ ìåòîäà èíòåðôåéñà<br>
|
|
<strong>begin</strong><br>
|
|
Println('IWindow.Menu');<br> <strong>end</strong>;<br>
|
|
<strong>procedure</strong> IRestaurant.Menu;<br> <strong>
|
|
begin</strong><br>
|
|
Println('IRestaurant.Menu');<br> <strong>end</strong>;<br>
|
|
<strong>end</strong>;<br><br><strong>begin</strong><br> <strong>var</strong>
|
|
r := new RestaurantSystem;<br> IWindow(r).Menu; <br>
|
|
IRestaurant(r).Menu; <br> r.Menu; // îøèáêà êîìïèëÿöèè!<br><strong>end</strong>. </code>
|
|
</p>
|
|
</blockquote>
|
|
<p> </p>
|
|
</body>
|
|
|
|
</html>
|