Classes e objetos

Uma classe em Java é um modelo para criar objetos. Ela define as propriedades (atributos) e comportamentos (métodos) que os objetos criados a partir da classe terão. Uma classe fornece a estrutura para os objetos, encapsulando tanto os dados quanto as funções que operam nesses dados.

Estrutura de uma classe

Uma classe em Java tem a seguinte estrutura:

public class Carro { 
 
   //Atributos 
   public static int nrCarrosFabricados; 
   public static final String NOME_DONO = "Pedro"
   private String marca; 
   private int ano; 
 
   //Construtores 
   public Carro(){ 
 
   } 
 
   public Carro(String marca, int ano){ 
      this.marca = marca; 
      this.ano = ano; 
   } 
 
   //Metodos publicos (Interface) 
 
   public void arranca(){ 
      System.out.println("ARRANCA"); 
   } 
 
   public void para(){ 
      trava(); //chama metodo privado 
      System.out.println("PARA"); 
   } 
 
   //Metodos privados 
 
   private void trava(){ 
      System.out.println("TRAVA"); 
   } 
 
 
   //Metodo main() para entrar na aplicacao ou para testar a classe 
 
   public static void main(String[] args) { 
 
 
   } 
} 

De notar que o nome de uma Classe deve começar por uma letra maiúscula.
Cada classe é guardada num ficheiro com a extensão .java. O ficheiro deve ter o mesmo nome
da classe.
Por exemplo a classe Carro deve estar guardada num ficheiro Carro.java.
Uma classe pode não ter todos os elementos acima mas deve ter a mesma estrutura.
No topo da classe, normalmente, declaramos as variáveis estáticas e as constantes, se as
houver.

Uma classe pode não ter o método main(). Por exemplo uma classe que só sirva para guardar dados, normalmente não tem o método main().

Criação (instanciação) de objetos

Embora o Java possua várias maneiras para criar objetos, o mais comum é usando a palavra-reservada new:

Carro carro = new Carro();

De notar que na instrução acima a palavra-reservada new invoca um dos construtores da classe, neste caso, Carro().

A partir de uma classe podemos criar vários objetos, cada um com o seu estado:

Carro c1 = new Carro("Opel", 2014);
Carro c2 = new Carro("Fiat", 2010);
Carro c3 = new Carro("Peugeut", 2021);
Carro c4 = new Carro("Ford", 2022);

A um objeto criado a partir de uma classe dizemos que é uma instância dessa classe.

A palavra-reservada this

A palavra-reservada this refere-se à instância corrente. this pode ser usado em métodos de instância ou em construtores.

NOTA: this não pode ser usado em métodos estáticos.

class Aluno {
   String nome;
   String morada;

   public Aluno(String nome, String morada) {
      //this refere-se ao objeto (instancia) criado
      this.nome = nome;  
      this.morada = morada;
   }

   public void mostraAluno(){
      System.out.println(this.nome + " " + this.morada);
   }
}

class Main() {
   public static void main(String args[]){
      Aluno aluno1 = new Aluno("Pedro", "Oeiras");
      Aluno aluno2 = new Aluno("Rita", "Almada");
      
      aluno1.mostraAluno); //Output: Pedro Oeiras. this refere-se ao objeto aluno1 (Pedro)
      aluno2.mostraAluno); //Output: Rita Almada. this refere-se ao objeto aluno2 (Rita)
}