Eu sou do mundo php. Você poderia explicar o que são getters e setters e dar alguns exemplos?
Eu sou do mundo php. Você poderia explicar o que são getters e setters e dar alguns exemplos?
Respostas:
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;
}
someObj.getTime().setHour(5)
lo, não deve afetar someObj
o estado interno de. Além disso, setters e getters (acessadores e modificadores por seus nomes mais elaborados) têm uma assinatura de método muito estrita, o que significa que getter não possui parâmetros. Métodos em geral devem fazer apenas uma coisa de qualquer maneira.
this
palavra-chave é opcional, a menos que haja um conflito com algo que tenha um escopo mais específico. No exemplo que você deu, o configurador que é criado terá um único parâmetro cujo nome corresponde ao nome do campo, portanto this.fieldName = fieldName
, é usado para distinguir que o campo está sendo atribuído ao invés do parâmetro sendo atribuído a ele mesmo, como fieldName = fieldname
ocorreria. Esse conflito não existe no getter.
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 é denominado isFoo. Eles também devem ter uma declaração específica, conforme 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;
}
}
O motivo de usar getters e setters em vez de tornar seus membros públicos é que isso torna possível alterar a implementação sem alterar a interface. Além disso, muitas ferramentas e kits de ferramentas que usam reflexão para examinar objetos aceitam apenas objetos que possuem getters e setters. JavaBeans, por exemplo, deve ter getters e setters, bem como alguns outros requisitos.
error: invalid method declaration; return type required
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,
setTime()
é chamada pelo objeto ctime
é definida para o valor passado porgetTime()
é chamada pelo objeto ctod
e tod
ser impressoVocê também pode querer ler " Por que os métodos getter e setter são ruins ":
Embora os métodos getter / setter sejam comuns em Java, eles não são particularmente orientados a objetos (OO). Na verdade, eles podem prejudicar a manutenção do seu código. Além disso, a presença de vários métodos getter e setter é um sinalizador vermelho de que o programa não é necessariamente bem projetado 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 design que o ajudará a romper a mentalidade getter / setter.
Aqui está um exemplo de 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 MUITO estes porque são fantásticos . Eu iria usá-lo para obter detalhes com minha codificação + animação. Por exemplo, faça um setter que lida com um Number
que exibe aquele número em sua página da web. Quando o setter é usado, ele anima o número antigo para o novo número usando um interpolador . Se o número inicial for 0 e você configurá-lo como 10, você verá os números mudarem rapidamente de 0 para 10 ao longo de, digamos, meio segundo. Os usuários adoram essas coisas e é divertido de criar.
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:
Aqui está um exemplo para explicar a maneira mais simples de usar getter e setter em java. Pode-se fazer isso de uma maneira mais direta, mas getter e setter têm algo especial que é ao usar o membro privado da classe pai na classe filha na herança. 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();
}
}