Vimos no artigo anterior como criar uma classe e definir os atributos do objeto. Agora, vamos ver como definimos os metodos, ou seja, os comportamentos do objeto.Tomando por base o algoritmo feito no artigo passado, e possivel realizar diversas operacoes em uma conta: deposito, saque, transferencia, consultas, etc. Essas operacoes sao realizadas em metodos definidos na propria classe Conta.Normalmente, os metodos acessam ou alteram os valores armazenados nos atributos dos objetos. Para acessar os atributos, devemos utilizar a palavra reservada this.Por exemplo, para realizar a operacao de deposito, podemos acrescentar o seguinte metodo na classe Conta.Veja a sua sintaxe:Com base nesses novos conhecimentos, o programa do artigo passado ficaria o seguinte:class Conta { int numero = 1; double saldo = 1000.0; double limite = 500.0; void deposita(double valor) { //Declarando metodo Deposita. this.saldo += valor; //Adicionando valor ao atributo Saldo. }}class OrientacaoObjetos { public static void main(String[] args) { Conta referencia = new Conta(); // Referencia de um objeto referencia.deposita(1000); // Chama o metodo deposita() // e passa a quantia 1000 a variavel valor System.out.println("Saldo Disponivel: " + referencia.saldo); }}O metodo deposita() nao possui nenhum retorno logico. Por isso, foi marcado com void. Mas, para outros metodos, pode ser necessario definir um tipo de retorno especifico. Por exemplo, suponha um metodo para realizar a operacao que consulta o saldo disponivel das contas. Suponha tambem que o saldo disponivel e igual a soma do saldo e do limite. Entao, esse metodo deve somar os atributos saldo e limite e devolver o resultado. Por outro lado, esse metodo nao deve receber nenhum valor, pois todas as informacoes necessarias para realizar a operacao estao nos atributos dos objetos que representam as contas.Entao o codigo ficaria assim:class Conta { // Criando uma classe para o objeto Conta int numero = 1; // Atributo numero double saldo = 1000.0; // Atributo saldo double limite = 500.0; // Atributo limite void deposita(double valor) { //Declarando metodo Deposita. this.saldo += valor; //Adicionando valor ao atributo Saldo. } double limiteTotal(){ //Declarando metodo limiteTotal. return this.saldo + this.limite; // Faz a soma do saldo + limite }}class OrientacaoObjetos { // Classe que contem o metodo principal public static void main(String[] args) { // metodo principal Conta referencia = new Conta(); // Referencia de um objeto referencia.deposita(1000); // Chama o metodo deposita() // e passa a quantia 1000 a variavel valor double total = referencia.limiteTotal(); // Armazenando a resposta // de um metodo em uma variavel System.out.println("Saldo Disponivel: " + total); // Imprimindo }}Sobrecarga de MetodosNas nossas classes, podemos necessitar de criar metodos que tenham os mesmos nomes, mas que funcionem de maneira diferente dependendo dos argumentos que informamos. Esta capacidade e chamada de sobrecarga de metodos, ou overloading de metodos.Uma sobrecarga de metodos so e valida se as listas de parametros dos metodos sao diferentes entre si. Veja o exemplo:/* Nesta classe de nome gerente temos dois metodos com o mesmo nome * porem, o primeiro, responsavel por aumentar o salario em 10% * nao recebe parametro nenhum, ja o segundo, recebe uma variavel * que sera utilizada para realizar o