60 lines
2.8 KiB
HTML
60 lines
2.8 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="Приведение типов в иерархии Предок-Потомок">
|
||
</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>Объект производного класса неявно преобразуется к типу
|
||
базового класса. Обратное преобразование от типа базового класса
|
||
к типу производного класса может быть выполнено только явно с помощью
|
||
<a href="../Operations_Expressions/typecast.html">операции приведения типа</a>.</p>
|
||
<p>Например:</p>
|
||
<blockquote>
|
||
<p><code><b>type</b><br>
|
||
Person =<b> class<br>
|
||
...<br>
|
||
</b> <b>end</b>;<br>
|
||
Student =<b> class</b>(Person)<br>
|
||
<b> ...<br>
|
||
</b> <b>procedure</b> IncCourse; <br>
|
||
<b>end</b>;<br>
|
||
...<br>
|
||
<b>var <br>
|
||
</b>p: Person;<br>
|
||
s: Student;<br>
|
||
<b>begin</b><br>
|
||
p := new Student('Иванов',20,3,1); //
|
||
неявное преобразование к типу базового класса<br>
|
||
s := Student(p); // явное
|
||
приведение к типу производного класса <br>
|
||
<b>end</b>.</code></p>
|
||
</blockquote>
|
||
<p>При выполнении приведения к производному классу может
|
||
возникнуть исключение (если приведение невозможно;
|
||
например, если в переменной <code>p</code> на момент
|
||
выполнения операции будет храниться объект типа <code>Person</code>).
|
||
</p>
|
||
<p>После приведения к типу производного класса можно обращаться
|
||
к любым полям, свойствам и методам производного класса:</p>
|
||
<blockquote>
|
||
<p><code>s.IncCourse;</code></p>
|
||
</blockquote>
|
||
<p>или без присваивания промежуточной переменной:</p>
|
||
<blockquote>
|
||
<p><code>Student(p)</code><code>.IncCourse;</code></p>
|
||
</blockquote>
|
||
<p>Проверка на возможность приведения к типу производного класса
|
||
и безопасное приведение к типу производного класса осуществляется с помощью <a href="../Operations_Expressions/isasop.html">операций
|
||
</a><a href="../Operations_Expressions/isasop.html"><b><code>is</code></b>
|
||
и <code><b>as</b></code></a>.</p>
|
||
</body>
|
||
|
||
</html> |