64 lines
3.1 KiB
HTML
64 lines
3.1 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="Абстрактный метод">
|
||
<param name="Keyword" value="abstract">
|
||
</object>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<H1><span lang="ru">Абстрактные </span><span lang="ru">м</span>етоды и классы</H1>
|
||
<p>Методы<span lang="ru">, предназначенные для переопределения в подклассах,
|
||
объявляются с ключевым словом </span><code><b>abstract</b></code>
|
||
<span lang="ru">и называются абстрактными. Данные методы являются
|
||
<a href="virtual.html">виртуальными</a>,
|
||
но ключевое слово </span><code><b>virtual</b></code><span lang="ru">
|
||
использовать не нужно. Например:</span></p>
|
||
<blockquote>
|
||
<p><code><b>type</b> <br>
|
||
Shape = <b>class</b><br>
|
||
<b>private</b><br>
|
||
x,y: integer;<br>
|
||
<b>public</b><br>
|
||
<b>constructor</b> Create(xx,yy: integer);<br>
|
||
<b>begin</b><br>
|
||
x := xx;<br>
|
||
y := yy;<br>
|
||
<b>end</b>;<br>
|
||
<b>procedure</b> Draw; <b>abstract</b>;<br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p><span lang="ru">Классы, содержащие абстрактные методы, также называются
|
||
<em>абстрактными</em>. Экземпляры этих классов создавать нельзя. </span></p>
|
||
<p><span lang="ru">Классы с абстрактными методами используются как
|
||
"полуфабрикаты" для создания других классов. Например:</span></p>
|
||
<blockquote>
|
||
<p><code><b>type</b> <br>
|
||
Point = <b>class</b>(Shape)<br>
|
||
<b>public</b><br>
|
||
<b>procedure</b> Draw; <b>override</b>;<br>
|
||
<b>begin</b><br>
|
||
PitPixel(x,y,Color.Black);<br>
|
||
<b>end</b>;<br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p><span lang="ru">Использование </span><code><b>override</b></code>
|
||
<span lang="ru">при переопределении абстрактных методов обязательно, поскольку
|
||
абстрактные методы являются разновидностью виртуальных. </span></p>
|
||
<p>Класс можно явно объявить абстрактным, используя ключевое слово <code>
|
||
<strong>abstract</strong></code>. Обычно абстрактные классы содержат абстрактные
|
||
методы, но необязательно:</p>
|
||
<blockquote>
|
||
<p><code><b>type</b> <br>
|
||
A = <strong>abstract</strong><b> class</b>(Shape)<br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p> </p>
|
||
<p> </p>
|
||
</body>
|
||
|
||
</html> |