Getter (programmering)

Läsmetod , getter ( eng.  getter  - mottagare) - (i programmering) en speciell metod som gör att du kan få data vars åtkomst är direkt begränsad. Det är en av teknikerna för objektorienterad programmering som hjälper till att implementera en flexibel inkapslingsmekanism . Parat med en setter kan den användas för att organisera egenskaper och metoderspråk där de inte stöds.

Exempel

Java

klass Foo { privat int data ; privat boolesk flagga ; public void setData ( int data ) { detta . data = data ; } public int getData () { returnera data ; } public void setFlag ( boolesk flagga ) { detta . flagga = flagga ; } // Det rekommenderas att prefixa booleska egenskaper med is istället för att få public boolean isFlag () { return flag ; } }

C++

klass Foo { privat : int m_data ; offentliga : void setData ( int data ) { m_data = data ; } int getData () const { returnera m_data ; } }

Delphi

typ TFoo = klass privat FData : Heltal ; offentlig funktion GetData : Integer ; procedure SetData ( const ANewData : Integer ) ; egenskap Data : Heltal läs GetData skriv SetData ; slut ; funktion TFoo . GetData : Integer ; börja Resultat := FData ; slut ; förfarande TFoo . SetData ( const ANewData : Integer ) ; börja FData := ANewData ; slut ;

I det här exemplet FDatatillhandahålls åtkomst till det dolda fältet genom metoderna SetData ( setter ) och GetData( getter )

Ruby

class Foo attr_accessor :bar # Rubysyntaktisk socker för att automatiskt skapa # en getter och en setter för bar variabel ände foo = Foo . ny foo . bar = 42 # call foo.bar=(42) (setter) foo . bar # ring foo.bar (getter)

Javascript

var Foo = function ( bar ) { this . bar = bar _ }; foo . prototyp = { get bar () { console . log ( 'bar getter' ); lämna tillbaka detta . _bar ; }, sätta bar ( bar ) { konsol . log ( 'stångssättare' ); detta . _bar = bar ; } }; var foo = ny Foo ( 15 ); foo . bar = 123 ; // konsol för stavsättning . log ( foo . bar ); // bar getter, 123

PHP

PHP har ingen direkt mekanism för att använda getters, så de implementeras genom den "magiska" __get() metoden

<?php klass Foo { privat $data ; offentlig funktion __get ( $name ) { $method = 'get' . ucfirst ( $namn ); if ( method_exists ( $this , $method )) { return $this -> $metod (); } } public function getData () { return $this -> data ; } }

C#

I C# används getters och setters i egenskapsmekanismen . En getter motsvarar nyckelordet get, en setter till en uppsättning. Version 3 introducerade en automatisk getter.

klass Foo { privat int id ; privat strängnamn ; _ public int ID { get { return id ; } } offentlig sträng Namn { get { return name ; } ställ in { detta . namn = värde ; } } offentlig sträng SomeProperty { get ; set ; } }

VB.NET

I VB.NET, för att skapa en getter, måste du ange ReadOnly-modifieraren om du inte använder en setter. Autoimplementerade egenskaper har dykt upp sedan VB 10.0, det vill säga det finns inget behov av att skriva en fastighetsimplementering, det räcker med en deklaration.

Public Class Foo Privat m_Data Som heltal 'Privat fält med data Public Property Message As Integer 'Auto-implementerad egendom sedan VB 10.0 Allmän skrivskyddad egendomsdata som heltal ' Skrivskyddad offentlig egendom retur m_Data End Get End Property End Class

Python

I Python kan en klass getter och setter göras med hjälp av @property decorator, attribut som börjar med __ markeras som tillgängliga endast inom objektet.

klass Foo : def __init__ ( själv , data = Ingen ): själv . __data = data @property def data ( self ): returnera själv . __data @data . setter def data ( själv , värde ): själv . __data = värde

Se även

Anteckningar