- Геттер (программирование)
-
Геттер (англ. Getter — получатель) — (в программировании) специальный метод, позволяющий получить данные, доступ к которым напрямую ограничен. Это один из методов объектно-ориентированного программирования, может помочь реализовать гибкий механизм инкапсуляции. В паре с сеттером (Setter), может использоваться для организации свойств, в языках, где они не поддерживаются.
Содержание
Примеры
Java
class Foo { private int m_data; public void setData(int data) { m_data = data; } public int getData() { return m_data; } }
C++
class Foo { private: int m_data; public: void SetData (int data) { m_data = data; } int GetData () const { return m_data; } }
Delphi
type TFoo = class private FData: Integer; public function GetData: Integer; procedure SetData(const ANewData: Integer); property Data: Integer read GetData write SetData; end; function TFoo.GetData; begin Result := FData; end; procedure TFoo.SetData(const ANewData: Integer); begin FData := ANewData; end;
В данном примере доступ к скрытому полю
FData
обеспечивается через методыSetData
(сеттер) иGetData
(геттер)Ruby
class Foo attr_accessor :bar # синтаксический сахар Ruby для автоматического # создания getter'а и setter'а для переменной bar end foo = Foo.new foo.bar = 42 # вызов foo.bar=(42) (setter) foo.bar # вызов foo.bar (getter)
Javascript
var Foo = function (bar) { this.bar = bar; }; Foo.prototype = { get bar () { alert('bar getter'); return this._bar; }, set bar (bar) { alert('bar setter'); this._bar = bar; } }; var foo = new Foo(15); foo.bar = 123; // bar setter alert(foo.bar); // bar getter, 123
PHP
В PHP отсутствует прямой механизм использования геттеров, поэтому их реализуют через "волшебный" метод __get()
<?php class Foo { private $data; public function __get($name) { $method = 'get'.ucfirst($name); if (method_exists($this, $method)) { return $this->$method(); } } public function getData() { return $this->data; } }
C#
В C# используется ключевое слово get, начиная с версии 3 появился автоматический геттер.
class Foo { private int _data; public int Date { get { return _data; } } } class Foo { public int Data { get; set; } }
VB.NET
В VB.NET для создания геттера обязатально необходимо указать модификатор ReadOnly если не используется сеттер. Автореализуемые свойства появились начиная с VB 10.0, т.е. нет необходимости писать реализацию свойства, достаточно объявления.
Public Class Foo Private m_Data As Integer 'Закрытое поле с данными Public Property Message As Integer 'Автореализуемое свойство, начиная с VB 10.0 Public ReadOnly Property Data As Integer 'Открытое свойство только для чтения Get Return m_Data End Get End Property End Class
См. также
Категория:- Метод (информатика)
Wikimedia Foundation. 2010.