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)
}
