Como os getters e setters funcionam?

Eu sou do mundo do php. Você poderia explicar o que os getters e setters são e poderiam dar alguns exemplos?

    O tutorial não é realmente necessário para isso. Leia sobre encapsulamento

    private String myField; //"private" means access to this is restricted public String getMyField() { //include validation, logic, logging or whatever you like here return this.myField; } public void setMyField(String value) { //include more logic this.myField = value; } 

    Em Java getters e setters são funções completamente comuns. A única coisa que os torna getters ou setters é a convenção. Um getter para foo é chamado getFoo e o setter é chamado setFoo. No caso de um booleano, o getter é chamado de isFoo. Eles também devem ter uma declaração específica, conforme mostrado neste exemplo de um getter e setter para ‘name’:

     class Dummy { private String name; public Dummy() {} public Dummy(String name) { this.name = name; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } } 

    O motivo para usar getters e setters em vez de tornar seus membros públicos é que isso permite alterar a implementação sem alterar a interface. Além disso, muitas ferramentas e kits de ferramentas que usam reflection para examinar objects aceitam apenas objects que possuem getters e setters. JavaBeans, por exemplo, deve ter getters e setters, bem como alguns outros requisitos.

     class Clock { String time; void setTime (String t) { time = t; } String getTime() { return time; } } class ClockTestDrive { public static void main (String [] args) { Clock c = new Clock; c.setTime("12345") String tod = c.getTime(); System.out.println(time: " + tod); } } 

    Quando você executa o programa, o programa começa na rede,

    1. o object c é criado
    2. function setTime() é chamada pelo object c
    3. a variável time é definida para o valor passado por
    4. function getTime() é chamada pelo object c
    5. a hora é devolvida
    6. Ele vai passar para tod e tod ser impresso

    Você também pode querer ler ” Por que os methods getter e setter são maus “:

    Embora os methods getter / setter sejam comuns em Java, eles não são particularmente orientados a objects (OO). Na verdade, eles podem prejudicar a manutenção do código. Além disso, a presença de numerosos methods getter e setter é um sinal de que o programa não é necessariamente bem projetado de uma perspectiva OO.

    Este artigo explica porque você não deve usar getters e setters (e quando você pode usá-los) e sugere uma metodologia de design que irá ajudá-lo a sair da mentalidade de getter / setter.

    1. Os melhores getters / setters são inteligentes.

    Aqui está um exemplo de javascript do mozilla:

     var o = { a:0 } // `o` is now a basic object Object.defineProperty(o, "b", { get: function () { return this.a + 1; } }); console.log(ob) // Runs the getter, which yields a + 1 (which is 1) 

    Eu usei estes muito porque são impressionantes . Eu usaria isso quando estivesse fantasiando com minha codificação + animação. Por exemplo, crie um setter que lide com um Number que exiba esse número na sua página da web. Quando o setter é usado, ele anima o número antigo para o novo número usando um tweener . Se o número inicial é 0 e você o ajusta para 10, então você verá os números virarem rapidamente de 0 a 10, digamos, meio segundo. Os usuários adoram essas coisas e é divertido criar.

    2. Getters / setters em php

    Exemplo de sof

     < ?php class MyClass { private $firstField; private $secondField; public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } } public function __set($property, $value) { if (property_exists($this, $property)) { $this->$property = $value; } return $this; } } ?> 

    citações:

    exemplo está aqui para expalin esta maneira mais simples de usar getter e setter em ‘java’. pode-se fazer isso de uma forma mais direta, mas getter e setter têm algo especial que é quando se usa um membro privado da class pai na class filha em inheritance. você pode tornar isso possível usando getter e setter.

     package stackoverflow; public class StackoverFlow { private int x; public int getX() { return x; } public int setX(int x) { return this.x = x; } public void showX() { System.out.println("value of x "+x); } public static void main(String[] args) { StackoverFlow sto = new StackoverFlow(); sto.setX(10); sto.getX(); sto.showX(); } }