Pergunta

Eu sou do mundo do php. Poderia explicar o que getters e setters são e poderia dar alguns exemplos?

Foi útil?

Solução

Tutorial não é realmente necessário para isso. Leia-se 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;
}

Outras dicas

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

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;
    }
}

A razão para usar getters e setters em vez de fazer o seu membros do público é que ele torna possível mudar a implementação sem alterar a interface. Além disso, muitas ferramentas e kits de ferramentas que o uso de reflexão para examinar objetos aceitar apenas objetos 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ê executar o programa, programa inicia em rede,

  1. objeto c é criado
  2. setTime() função é chamada pelo objeto c
  3. o time variável é definida para o valor passado pelo
  4. getTime() função é chamada por objeto c
  5. o tempo é retornado
  6. Será passe para tod e tod se impresso

Você também pode querer ler " Por métodos get e set são maus ":

Apesar de getter / setter métodos são comuns em Java, eles não são particularmente orientada a objetos (OO). Na verdade, eles podem danificar manutenção do seu código. Além disso, a presença de numerosos métodos get e set é uma bandeira vermelha que o programa não é necessariamente assim concebida a partir de uma perspectiva OO.

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

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

Aqui está um exemplo javascript de mozilla:

var o = { a:0 } // `o` is now a basic object

Object.defineProperty(o, "b", { 
    get: function () { 
        return this.a + 1; 
    } 
});

console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)

Eu usei estes muito porque eles são incrível . Eu iria utilizá-lo quando chegar a fantasia com a minha codificação + animação. Por exemplo, fazer um setter que lida com um Number que exibe esse número na sua página. Quando o setter é usada anima o número antigo para o novo número usando um tweener . Se o número inicial é 0 e você configurá-lo para 10, em seguida, você veria os números virar rapidamente de 0 a 10 sobre, digamos, meio segundo. Os usuários adoram essas coisas e é divertido para 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;
  }
}
?>

citings:

Aqui está um exemplo para explicar a maneira mais simples de usar getter e setter em java. Pode-se fazer isso de uma forma mais simples, mas getter e setter tem algo especial que é quando se usa membro particular da classe pai na sala de aula criança na herança. Você pode torná-lo possível através da utilização de 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();
        }

    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top