/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PABCNetHelp/LangGuide/Classes/methods.html
79 строк
5 KB
samuraiGH
adding working-tree-encoding attribute (#3325)
07 ноя 2025, 16:12
Не верифицирован
07 ноя 2025, 16:12
cf1fd29
Код
Авторство
О чём код?
<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> <p>Определение методов можно давать как внутри класса (стиль Java, C#, C++), так и вне класса (стиль Delphi, C++). При определении метода вне интерфейса класса его имя предваряется именем класса с последующей точкой. Например:</p> <blockquote> <p><code><b>type</b> <br> Rectangle =<b> class</b><br> x1,y1,x2,y2: integer;<br> <b>constructor</b> Create(xx1,yy1,xx2,yy2: integer);<br> <b>begin<br> </b> x1 := xx1; x2 := xx2;<br> y1 := yy1; y2 := yy2;<br> <b>end</b>;<br> <b>function</b> Square: integer;<br> <b>end</b>;</code></p> <p><code><b>function</b> Rectangle.Square: integer;<br> <b>begin</b><br> Result := abs(x2-x1) * abs(y2-y1);<br> <b>end</b>;</code></p> </blockquote> <p>Обычно когда класс определяется в интерфейсной части модуля, то в интерфейсе класса производят лишь объявление методов, реализацию же методов класса дают в секции реализации модуля.</p> <p>Методы делятся на <i> <span lang="ru">классовые</span></i> и <i>экземплярные</i>. <span lang="ru">Классовые методы в </span>.NET <span lang="ru">называются <i>статическими</i>. О</span>бъявлени<span lang="ru">е</span> <span lang="ru">классов</span>ого метода <span lang="ru">начинается с ключевого слова </span><code><b>class</b></code>. Экземплярные методы можно вызывать только через переменную-объект класса. <span lang="ru">Классовые</span> же методы не связаны с конкретным экземпляром класса; их следует вызывать в виде: </p> <blockquote> <p><i>имя класса</i><code>.</code><i>имя метода</i><code>(</code><i>параметры</i><code>)</code> </p> </blockquote> <p>Внутри <span lang="ru">классов</span>ого метода не может быть обращения к полям класса, а может быть только обращение к другим <span lang="ru">классовы</span>м методам. Напротив, экземплярный метод может вызывать <span lang="ru">классовый</span>.</p> <p>Например:</p> <blockquote> <p><code><b>type</b> <br> Rectangle =<b> class<br> </b>...<br> <b>class procedure</b> Move(<b>var</b> r: Rectangle; dx,dy: integer);<br> <b>begin</b><br> r.x1 += dx; r.x2 += dx;<br> r.y1 += dy; r.y2 += dy;<br> <b>end</b>;<br> <b>end</b>;<br> ...<br> <b>var</b> r := <b>new</b> Rectangle(10,10,100,100);<br> Rectangle.Move(r,5,5);</code></p> </blockquote> <p>По существу, <span lang="ru">классовые</span> методы являются разновидностью глобальных<span lang="ru"> подпрограмм</span>, но находятся внутри класса, что подчеркивает, что они осуществляют действия, связанные именно с этим классом. Класс в этом случае выступает только в роли пространства имен.</p> <p>Нередко создаются классы, целиком состоящие из <span lang="ru">классовых </span>методов. Таков, например, класс <code>System.Math</code>, содержащий определения математических подпрограмм.</p> </body> </html>