Menu
Coddy logo textTech

As Palavras-chave get e set

Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 43 de 56.

Getters e setters são métodos especiais que se parecem com propriedades, mas são, na verdade, funções. Eles dão a você controle sobre como as propriedades são acessadas e modificadas.

Vamos criar uma classe Person simples:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  // Getter para fullName
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
  
  // Setter para fullName
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Agora podemos usar esses getters e setters como propriedades:

// Cria uma nova Person
const person = new Person('John', 'Doe');

// Usa o getter
console.log(person.fullName); // Saída: John Doe

// Usa o setter
person.fullName = 'Jane Smith';

// O setter atualizou as propriedades internas
console.log(person.fullName); // Saída: Jane Smith

Observe que não chamamos esses métodos com parênteses. Eles se comportam exatamente como propriedades, mas executam código quando acessados ou modificados.

challenge icon

Desafio

Você recebeu uma classe User com uma propriedade age. Sua tarefa é adicionar um getter e um setter para age que:

  1. Getter <strong>get age()</strong>: retorna a idade armazenada
  2. Setter <strong>set age(newAge)</strong>: valida se a idade está entre 0 e 120
    • Se for válida (0-120): armazene-a em this._age
    • Se for inválida: não a altere e registre "Invalid age!"

Folha de consulta

Getters e setters são métodos especiais que se parecem com propriedades, mas executam código quando são acessados ou modificados.

Getter - use a palavra-chave get para definir um método que retorna um valor:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
}

Setter - use a palavra-chave set para definir um método que aceita um valor:

class Person {
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Uso - acesse getters e setters como propriedades (sem parênteses):

const person = new Person('John', 'Doe');

// Using getter
console.log(person.fullName); // John Doe

// Using setter
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smith

Experimente você mesmo

import { User } from './user.js';

// Código de teste - não modifique
const user = new User("Alice", 25);
console.log(user.age);      // Deve exibir 25

user.age = 30;
console.log(user.age);      // Deve exibir 30

user.age = 150;             // Deve mostrar "Invalid age!"
console.log(user.age);      // Ainda deve exibir 30 (inalterado)

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos