Getter e Setter
A Melhor Maneira de Contornar o Modificador de Acesso Private
Todos os programadores Java utilizam construções chamadas getters e setters.
Getters e setters são métodos que seguem um padrão específico. Eles são usados para contornar o modificador de acesso private e manipular campos de outra classe de forma eficaz.
O Que Fazem Getters e Setters
De forma simples, o setter permite atribuir um valor a um campo específico protegido pelo modificador de acesso private, enquanto o getter permite recuperar o valor de um campo protegido pelo modificador de acesso private.
A sintaxe para um getter e um setter:
Main.java
123456789// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
Como pode ser visto no código acima, utilizamos a convenção de nomenclatura para os métodos getFieldName() e setFieldName(). Portanto, se tivermos um campo private String name e criarmos um getter e um setter com os nomes getName() e setName(), respectivamente. Vale ressaltar também que o getter retorna um valor do mesmo tipo do campo name, enquanto o setter recebe um parâmetro do mesmo tipo do campo name.
Isso nos permite acessar campos que estão protegidos pelo modificador de acesso private.
Vamos analisar um exemplo de acesso a um campo private da classe Person na classe main:
Main.java
123456789101112131415161718192021package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Como pode ser observado, utilizamos o setter para definir um valor para o campo name, e em seguida utilizamos o getter para exibir o valor do campo name na tela. Atenção à sintaxe do getter e do setter, assim como ao fato de que o campo name na classe Person está protegido pelo modificador de acesso private.
Construtor vs Getter/Setter
Qual é melhor utilizar, inicialização por meio de um construtor + sobrescrita do método toString(), ou o uso de getters e setters?
É preferível utilizar getters e setters para acessar campos protegidos pelo modificador de acesso private. Isso proporciona maior flexibilidade ao código e melhora sua legibilidade. Ao visualizar o uso do método getName() no código, entende-se imediatamente que esse método recupera o campo chamado name. O mesmo ocorre ao visualizar o uso do método setName(), entende-se imediatamente que está sendo atribuído um valor específico ao campo para o objeto da classe em que é utilizado. Se outras pessoas lerem seu código, ficarão satisfeitas ao encontrar getters e setters.
Também é importante observar que cada campo requer seu próprio getter e setter. Se uma classe possui dois campos protegidos pelo modificador de acesso private, a classe deve ter um getter para cada campo, ou seja, dois getters e dois setters.
Vamos analisar um exemplo em que adicionamos um campo age à classe Person:
Main.java
12345678910111213141516171819202122232425262728293031package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Como pode ser observado, foi criado um getter e um setter para cada campo da classe Person. No método main, os campos foram inicializados utilizando o setter e seus valores foram exibidos na tela utilizando o getter. O uso desses métodos é bastante conveniente, e serão utilizados com frequência no futuro.
1. Qual é o objetivo de utilizar getters e setters?
2. Qual é a sintaxe de um método getter em Java?
3. Qual é a sintaxe de um método setter em Java?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you show me an example of how to write a getter and setter in Java?
Why is it important to use private fields with getters and setters?
What are some best practices when creating getters and setters?
Awesome!
Completion rate improved to 2.63
Getter e Setter
Deslize para mostrar o menu
A Melhor Maneira de Contornar o Modificador de Acesso Private
Todos os programadores Java utilizam construções chamadas getters e setters.
Getters e setters são métodos que seguem um padrão específico. Eles são usados para contornar o modificador de acesso private e manipular campos de outra classe de forma eficaz.
O Que Fazem Getters e Setters
De forma simples, o setter permite atribuir um valor a um campo específico protegido pelo modificador de acesso private, enquanto o getter permite recuperar o valor de um campo protegido pelo modificador de acesso private.
A sintaxe para um getter e um setter:
Main.java
123456789// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
Como pode ser visto no código acima, utilizamos a convenção de nomenclatura para os métodos getFieldName() e setFieldName(). Portanto, se tivermos um campo private String name e criarmos um getter e um setter com os nomes getName() e setName(), respectivamente. Vale ressaltar também que o getter retorna um valor do mesmo tipo do campo name, enquanto o setter recebe um parâmetro do mesmo tipo do campo name.
Isso nos permite acessar campos que estão protegidos pelo modificador de acesso private.
Vamos analisar um exemplo de acesso a um campo private da classe Person na classe main:
Main.java
123456789101112131415161718192021package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Como pode ser observado, utilizamos o setter para definir um valor para o campo name, e em seguida utilizamos o getter para exibir o valor do campo name na tela. Atenção à sintaxe do getter e do setter, assim como ao fato de que o campo name na classe Person está protegido pelo modificador de acesso private.
Construtor vs Getter/Setter
Qual é melhor utilizar, inicialização por meio de um construtor + sobrescrita do método toString(), ou o uso de getters e setters?
É preferível utilizar getters e setters para acessar campos protegidos pelo modificador de acesso private. Isso proporciona maior flexibilidade ao código e melhora sua legibilidade. Ao visualizar o uso do método getName() no código, entende-se imediatamente que esse método recupera o campo chamado name. O mesmo ocorre ao visualizar o uso do método setName(), entende-se imediatamente que está sendo atribuído um valor específico ao campo para o objeto da classe em que é utilizado. Se outras pessoas lerem seu código, ficarão satisfeitas ao encontrar getters e setters.
Também é importante observar que cada campo requer seu próprio getter e setter. Se uma classe possui dois campos protegidos pelo modificador de acesso private, a classe deve ter um getter para cada campo, ou seja, dois getters e dois setters.
Vamos analisar um exemplo em que adicionamos um campo age à classe Person:
Main.java
12345678910111213141516171819202122232425262728293031package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Como pode ser observado, foi criado um getter e um setter para cada campo da classe Person. No método main, os campos foram inicializados utilizando o setter e seus valores foram exibidos na tela utilizando o getter. O uso desses métodos é bastante conveniente, e serão utilizados com frequência no futuro.
1. Qual é o objetivo de utilizar getters e setters?
2. Qual é a sintaxe de um método getter em Java?
3. Qual é a sintaxe de um método setter em Java?
Obrigado pelo seu feedback!