Soy del mundo php. ¿Podrías explicar qué son los captadores y establecedores y podrían darte algunos ejemplos?¿Cómo funcionan getters y setters?
Respuesta
El tutorial no es realmente necesario para esto. Lea sobre encapsulation
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;
}
así getter es solo un método para obtener un campo privado y setter está configurando un nuevo campo. gracias por la excelente explicación del código – ajsie
¿podría pasar un parámetro a un getter? – ajsie
noname: No y no. Getter es una forma de obtener un valor pero NO expone el valor contenido en un campo, es decir, si llama 'someObj.getTime(). SetHour (5)' no debería afectar el estado interno de 'someObj'. También setters y getters * (acceso y mutadores por su nombre más elegante) * tienen un método muy estricto que significa que getter no tiene ningún parámetro. Los métodos en general solo deberían hacer una cosa de todos modos. – Esko
En Java getters y setters son funciones completamente comunes. Lo único que los hace getters o setters es la convención. Un getter para foo se llama getFoo y el setter se llama setFoo. En el caso de un booleano, el getter se llama isFoo. También deben tener una declaración específica como se muestra en este ejemplo de un getter y setter para el 'nombre':
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;
}
}
La razón de usar captadores y definidores en vez de hacer los miembros de su público es que hace que sea posible cambiar la implementación sin cambiar la interfaz. Además, muchas herramientas y kits de herramientas que utilizan la reflexión para examinar objetos solo aceptan objetos que tienen getters y setters. JavaBeans, por ejemplo, debe tener getters y setters, así como algunos otros requisitos.
¿No deberían esos constructores no tener 'vacío'? –
Void es realmente necesario aquí. Si no lo tiene, obtiene: 'error: declaración de método no válido; return type required' – Dan
Void no es necesario aquí –
También puede leer "Why getter and setter methods are evil":
Though getter/setter methods are commonplace in Java, they are not particularly object oriented (OO). In fact, they can damage your code's maintainability. Moreover, the presence of numerous getter and setter methods is a red flag that the program isn't necessarily well designed from an OO perspective.
This article explains why you shouldn't use getters and setters (and when you can use them) and suggests a design methodology that will help you break out of the getter/setter mentality.
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);
}
}
Cuando se ejecuta el programa, el programa se inicia en la red,
- objeto c se crea
- función
setTime()
es llamado por el objeto c - la variable
time
se establece en el valor pasado por - función
getTime()
es llamado por objeto c - el tiempo se volvió
- Será passe a
tod
ytod
se imprimen a cabo
1. Los mejores getters/setters son inteligentes.
Aquí está un ejemplo 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)
He usado estos mucho porque son impresionante. Lo usaría cuando me gustara con mi codificación + animación. Por ejemplo, crea un setter que se ocupe de un Number
que muestra ese número en tu página web. Cuando se usa el colocador, anima el número anterior al nuevo utilizando un tweener. Si el número inicial es 0 y lo configuras a 10, entonces verás que los números cambian rápidamente de 0 a 10, digamos, medio segundo. A los usuarios les encantan estas cosas y es divertido de crear.
2.Getters/setters en php
Ejemplo desde 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:
example is here to expalin this most simple way of using getter and setter in 'java' . one can do this by more straight forward way but getter and setter has something special that is when using private member of parent class in child class in inheritance. you can make it possible through using getter and 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();
}
}
No voy a devolverte el voto (no vale la pena el esfuerzo). Tenga en cuenta que (1) ha respondido en una pregunta de ** Java **, donde el idioma del programa _debería estar en Java. (2) Si desea publicar, asegúrese de que el diseño se realice correctamente. (3) Su uso de encapsulación (getter (o acceso) y setters (o mutators)) es incorrecto. Busque lo que significa la encapsulación ... (marque la respuesta) – KarelG
@KarelG lo siento, no leí las etiquetas. Lo actualicé a java.gracias por darme cuenta. –
- 1. Cómo documentar getters y setters
- 2. Getters y setters para matrices
- 3. Getters/setters en Java
- 4. Lua getters and setters
- 5. Evitar Getters Interna/setters
- 6. Symfony2 generadores getters/setters
- 7. Getters/setters de JavaScript y extender objetos
- 8. PHP OOP muchos setters, getters
- 9. Getters and setters en javascript
- 10. AtomicInteger vs getters/setters sincronizados
- 11. Usando getters/setters en Java
- 12. ¿Se permiten setters/getters estáticos?
- 13. Javascript getters/setters en IE?
- 14. ¿Cómo generar getters y setters en Visual Studio?
- 15. ¿Cómo doblar u ocultar setters y getters en Eclipse?
- 16. DDD y el uso de Getters y Setters
- 17. Objetivo C - Accessors ie Getters/Setters
- 18. The C# Shorthand getters and setters
- 19. método de prueba junit para getters & setters
- 20. Rendimiento Android - 'Evitar interna getters/setters'
- 21. Buenas prácticas de getters, setters y properties. Java vs. C#
- 22. ¿VB.NET admite getters y setters automáticos en las propiedades?
- 23. ¿Debo molestarme con getters y setters en PHP?
- 24. Scala getters y setters en la clase Java
- 25. ¿Cuál es el punto de los getters y setters?
- 26. Usando una variable de respaldo para getters y setters
- 27. ¿Hay alguna manera de interceptar setters y getters en C#?
- 28. ¿Por qué declarar privado el método getters y setters?
- 29. ¡Benefíciese de getters y setters generados en Play! marco
- 30. Getters implícitos y Setters no creados para mí
tratar de evitarlos en la programación orientada a objetos: http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html – yegor256
@ yegor256 entiendo su perro y bola analogía e incluso la apoyo, pero ¿qué ocurre cuando un objeto "organismo vivo" almacena el valor primitivo ocasional, por ejemplo, una identificación? ¿Qué sucede si desea ir un paso más allá de la asignación simple pero no desea escribir una nueva clase solo para manejar valores primitivos? – Jacksonkr