pascalabcnet/PABCNetHelp/LangGuide/Interfaces/manyinterf.html

49 lines
1.8 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>
&nbsp; IShape = <b>interface</b><br>&nbsp;&nbsp;&nbsp;
<b>procedure</b> Draw;<br>&nbsp;&nbsp;&nbsp; <b>property</b> X: integer <b>read</b>;<br>&nbsp;&nbsp;&nbsp;
<b>property</b> Y: integer <b>read</b>;<br>&nbsp;
<b>end</b>;<br>
&nbsp; IBrush = <b>interface</b><br>&nbsp;&nbsp;&nbsp;
<b>procedure</b> Draw;<br>&nbsp;&nbsp;&nbsp; <b>property</b>
Size: integer <b>read</b>;<br>&nbsp;
<b>end</b>;<br>
&nbsp; Brush = <b>class</b>(IShape,IBrush)<br>
&nbsp;&nbsp;&nbsp; // ìåòîä Draw ðåàëèçóåòñÿ
åäèíîæäû<br>
&nbsp; <b>end</b>;</code></p>
</blockquote>
<p>×òîáû ðåøèòü ïðîáëåìó ñ îäèíàêîâûìè èìåíàìè â èíòåðôåéñàõ, â
.NET êëàññû ìîãóò ðåàëèçîâûâàòü ìåòîäû èíòåðôåéñîâ òàê
íàçûâàåìûì ÿâíûì îáðàçîì, òàê ÷òî âûçîâ ìåòîäà èíòåðôåéñà äëÿ ïåðåìåííîé êëàññà
âîçìîæåí òîëüêî ïîñëå ÿâíîãî ïðèâåäåíèÿ ê òèïó èíòåðôåéñà. Â <b>
PascalABC.NET</b> òàêèå êëàññû îïðåäåëÿòü íåëüçÿ,
îäíàêî, ïîëüçîâàòüñÿ òàêèìè êëàññàìè, ðåàëèçîâàííûìè â .NET,
ìîæíî. Íàïðèìåð, òèï <code>integer</code> ÿâíî
ðåàëèçóåò èíòåðôåéñ <code>IComparable</code><span id="nsrTitle">:</span></p>
<blockquote>
<p><code><b>var</b> i: integer := 1;<br>
<b>var</b> res : integer := IComparable(i).CompareTo(2);<br>
// i.CompareTo(2)
- îøèáêà êîìïèëÿöèè </code></p>
</blockquote>
<p>&nbsp;</p>
</body>
</html>