49 lines
1.8 KiB
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>
|
|
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>
|
|
// ìåòîä Draw ðåàëèçóåòñÿ
|
|
åäèíîæäû<br>
|
|
<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> </p>
|
|
</body>
|
|
|
|
</html>
|