Afinal, o que são os métodos em Java?

Os programas em Java são escritos combinando métodos e classes que são predefinidos na API do Java (Java Application Programming Interface ou bibliotecas de classes Java). Em construções de grandes softwares, são criadas em classes pequenas partes de código, que são identificados como métodos.

Trabalhando com Métodos em Java

Os métodos são conhecidos como funções, ações de execuções ou procedimentos, sendo responsáveis por ajudar no design do sistema (separação por blocos), e na reutilização de software, podendo ser aproveitados métodos já existentes para a construção de novos sistemas.

As classes que armazenam esses métodos são conhecidas como projetos de objetos, onde são definidos os atributos que o objeto terá e os métodos projetados para realizar as tarefas da classe.

Por exemplo, quando criado um método com a ação de depositar um valor para uma conta bancária, dentro desse método são incluídas as ações que irão retornar algum valor, trabalhar em uma variável ou até mesmo chamar outro método já criado.

public class Conta {
	
	private Double saldo;

	public void setSaldo(Double saldo) {
		this.saldo = saldo;
	}

	public Double getSaldo() {
		return saldo;
	}
	
	public void depositar(Double valor){
		saldo += valor;
	}
	
	public void verificaSaldo(){
		System.out.println("Valor do Saldo: "+getSaldo());
	}
}
Listagem 1. Classe Conta com os métodos e atributos

Na Listagem 2 usamos uma variável que contém uma referência a um objeto, seguido por um ponto (.) que faz a invocação de todos os métodos e variáveis públicas.

	public static void main(String[] args) {
		
		//INSTANCIA A CLASSE
		Conta conta = new Conta();
		
		//DEFINE UM VALOR DE SALDO
		conta.setSaldo(633.00);
		
		//DEFINE VALOR PARA DEPOSITAR
		conta.depositar(555.0);
		
		//RESGATA VALOR
		conta.verificaSaldo();
		
	}
Listagem 2. Invocação dos métodos da classe Conta

Métodos static em Java

Os métodos static ou métodos da classe são funções que não dependem de nenhuma variável de instância, quando invocados executam uma função sem a dependência do conteúdo de um objeto ou a execução da instância de uma classe, conseguindo chamar direto qualquer método da classe e também manipulando alguns campos da classe.

Os métodos static tem um relacionamento com uma classe como um todo, enquanto os métodos que não são static são associados a uma instância de classe específica (objeto) e podem manipular as variáveis de instância do objeto, como pode ser visto nos exemplos de declarações de métodos.

Na Listagem 3 é usado o nome de classe e um ponto (.) que faz a invocação de um método static da classe.

public class Teste_Metodo_Static {

	public static void main(String[] args) {
		double num1 = 8.5;
		double pi = Math.PI;
		
		System.out.println("Valor num1 = "+num1);
		System.out.println("Valor PI = "+pi);

		System.out.println("Soma dos valores = "+(num1+pi));

	}

}
Listagem 3. Invocando métodos static

No exemplo da Listagem 4 não é instanciado nenhum objeto, apenas é chamada a classe diretamente, invocando o método resultado que recebe dois argumentos do tipo inteiro.

class Soma{
	
	public static int resultado(int num1, int num2){
		return (num1 + num2);
	}
}

public class TestaSomaEstatica {

	public static void main(String[] args) {
		
		System.out.println(Soma.resultado(10,50));
	}
}
Listagem 4. Exemplo chamada de método static

No exemplo da Listagem 3 a classe Math chama o atributo PI que tem as seguintes características, public static final double PI, que contém o valor da razão da circunferência de um círculo pelo seu diâmetro. Nesse caso não foi definido valor, porque essa variável internamente já possui o valor estático. Geralmente quando variáveis são definidas como final, possuem um valor que não poderá ser alterado. Veja mais detalhes da classe Math na documentação do Java Clicando Aqui.

Método main

Na execução de uma programa Java, a JVM (Java Virtual Machine) tenta chamar o método main da classe que foi especificada. Quando declarado o método main como static permite que a JVM invoque o main sem criar uma instância da classe, ou seja, a classe é conhecida como classe principal ou classe testadora, que efetuará os testes e chamadas das classes para a execuções dos programas.

A JVM carrega a classe especificada pelo nome da classe que utiliza para invocar o método main (método principal/testador). Sempre que uma classe tiver esse método, é especificado que uma lista de Strings como argumentos de linha de comando, será passada para o aplicativo junto a JVM.

Explicação da classe main
Figura 1. Explicação da classe main

Sobrecarga de método em Java

Em uma mesma classe pode haver vários métodos com o mesmo nome, contanto que possuam listas de argumentos distintas. Os argumentos podem variar em número, tipo e ordem de declaração.

class MetodoSobrecarregado{
	
	public void testaMetodosSobrecarregados()
	{
		System.out.printf("Salário em número inteiro = %d\n", salario(700));
		System.out.printf("Salário em número double = %f\n", salario(7.500));
	}
	
	public int salario(int valorInt)
	{
		System.out.printf("\n Salário com argumento de inteiro = %d\n", valorInt);
		return valorInt * valorInt;
	}
	
	public double salario( double valorDouble)
	{
		System.out.printf("\n Salário chamado com argumento de double = %f\n", valorDouble);
		return valorDouble * valorDouble;
	}
}

public class Test_Metodos_Sobrecarregados {

	public static void main(String[] args) {
		
		MetodoSobrecarregado testaM = new MetodoSobrecarregado();
		testaM.testaMetodosSobrecarregados();
	}
}
Listagem 5. Declaração método sobrecarregado

Na Listagem 5 foram declarados dois métodos. O primeiro retorna valores do tipo int e outro que retorna valores do tipo double.

Esses métodos possuem nomes iguais, porém não são iguais, pois possuem certas diferenças como: tipo de dados, retorno e parâmetros.

O compilador do Java descobre quando são métodos sobrecarregados, distinguindo pelas suas assinaturas, que é uma combinação do nome do método, tipos e ordem dos seus parâmetros.

Características dos métodos sobrecarregados

  • A ordem dos tipos de parâmetros é importante;
  • As chamadas de método não podem ser distinguidas por tipo de retorno;
  • Podem ter diferentes tipos de retorno se os métodos tiverem diferentes listas de parâmetro;
  • Se diferenciam pela sua assinatura, que é uma combinação do nome do método, tipos e ordem dos seus parâmetros.

Métodos sem retorno em Java

Esse tipo de método executa apenas o código que tem dentro dele, não retornando nenhum resultado, sendo identificados com a palavra-chave void.

class Metodo2{
	public void escrever()
	{
		System.out.println("Método sem Retorno - VOID ");
	}
}

public class Metodos_Sem_Retorno {

	public static void main(String[] args) {
		
		Metodo2 m = new Metodo2();
		m.escrever();
	}
}
Listagem 6. Exemplo método void

Métodos com retorno em Java

Esses métodos que não possuem a palavra-chave void incorporada na declaração, mas sim um tipo de dados, apresentam em seu corpo a palavra reservada return, que informa que o método terá que retornar o mesmo tipo de dados com o qual foi declarado.

class Metodo3{
	
	String nome = "João Silva";
	
	public String retornaNome()
	{
		return nome;
	}
}

public class Metodo_Com_Retorno {

	public static void main(String[] args) {
		
		Metodo3 m3 = new Metodo3();
		System.out.println(m3.retornaNome());

	}

}
Listagem 7. Exemplo de método que retorna uma String
class ValoresInt
{
	public int calculadora()
	{
		int a = 10;
		int b = 20;
		int c = a + b;
		
		return c;
	}
}

public class Metodo_Com_Retorno_Inteiro {

	public static void main(String[] args) {
		
		ValoresInt valores = new ValoresInt();
		
		System.out.print(valores.calculadora());
	}
}
Listagem 8. Exemplo de método que retorna um inteiro

Com isso finalizamos este artigo cujo objetivo foi apresentar, de forma básica, a utilização de métodos na linguagem Java. Foi explicado é feita a declaração dos vários tipos de métodos e como invocá-los posteriormente.

Espero que tenham gostado e até a próxima.

Links Úteis

  • Lógica de Programação: Neste curso veremos uma introdução a algoritmos, utilizando como linguagem de apoio o Portugol.
  • Cursos de Engenharia de Software: Torne-se um programador, analista ou gerente de projetos com grandes habilidades de engenharia de software. Conheça metodologias e ferramentas como Scrum, XP, PMBOK, UML e muito mais.
  • Cursos de Banco de Dados: Aprenda a modelar, implementar e administrar bancos de dados usando as ferramentas mais solicitadas do mercado. Domine a linguagem SQL e os principais SGBDs: SQL Server, Oracle, MySQL e outros.

Saiba mais sobre Java ;)

  • O Que é JPA?: Dominar a persistência de dados é uma necessidade indispensável aos programadores. Sem esse conhecimento nossas aplicações não terão a capacidade de armazenar e recuperar os dados por ela manipulados.
  • Preparando o ambiente para programar em Java: Neste curso você aprenderá a preparar seu ambiente para programar em Java. Veremos aqui o que é necessário instalar e como proceder para desenvolver aplicações com essa linguagem.
  • Criando meu primeiro projeto no Java: Neste curso você aprenderá a criar o seu primeiro programa com Java, e não, ele não será um simples “Hello, World!”. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento.