Метод чтения, геттер ( — получатель) — (в программировании) специальный метод, позволяющий получить данные, доступ к которым напрямую ограничен. Это один из методов объектно-ориентированного программирования, который помогает реализовать гибкий механизм инкапсуляции. В паре с сеттером (Setter) он может использоваться для организации свойств и методов в языках, где они не поддерживаются.

Примеры

Java class Foo {

private int data; private boolean flag;

public void setData(int data) { this.data = data;

public int getData() { return data;

public void setFlag(boolean flag) { this.flag = flag;

// Для boolean свойств рекомендуется использовать префикс is, а не get public boolean isFlag() { return flag;

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: Integer; 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 () { console.log('bar getter'); return this._bar; }, set bar (bar) { console.log('bar setter'); this._bar = bar;

var foo = new Foo(15); foo.bar = 123; // bar setter console.log(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, сеттеру — set. В версии 3 появился автоматический геттер.

class Foo { private int id; private string name; public int ID

get { return id; }

public string Name

get { return name; } set { this.name = value; }

public string SomeProperty

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

Python В Python геттер и сеттер класса можно сделать с помощью декоратора @property, атрибуты, которые начинаются с __ помечаются как доступные только внутри объекта. class Foo:

def __init__(self, data=None): self.__data = data

@property def data(self): return self.__data

@data.setter def data(self, value): self.__data = value

См. также Setter

Примечания

Категория:Метод (информатика)