O documento apresenta conceitos de orientação a objetos em Java, incluindo classes, atributos, métodos, construtores, herança, sobrecarga e reescrita de métodos. É apresentada uma classe Funcionário com seus atributos e métodos, além de um programa para testar a classe. Posteriormente, são explicados os conceitos de herança, sobrescrita e sobrecarga através de exemplos.
1. Introdução à Análise Orientada a Objetos Prof. Ariovaldo Dias de Oliveira Parte 2
2.
3. Funcionário (String nome, String departamento, double salário, String admissão, String rg) { this.nome = nome; this.departamento = departamento; this.salário = salário; this.admissão = admissão; this.rg = rg; ativo = true; } Construtor Segue... O construtor da classe é um bloco declarado com o mesmo nome da classe. Quando não se declara nenhum construtor, um construtor default é ativado. Ele não recebe nenhum argumento e o corpo dele é vazio. A partir do momento que se declara um construtor, o construtor default não é mais fornecido.
9. class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } } Em todo momento que criarmos um objeto do tipo Gerente , este objeto também possuirá os atributos e métodos de Funcionário Segue...
10. class TestaGerente { public static void main (String [ ] args) { Gerente gestor = new Gerente ( ); gestor.nome = "João"; gestor.setSalário(8000.0); Scanner input = new Scanner(System.in); System.out.println ("Informe a senha para criar esse gerente: "); int senha = input.nextInt(); gestor.senha = senha; System.out.println ("Informe a senha para acessar esse gerente: "); int senhaAcesso = input.nextInt(); boolean permite = gestor.autentica(senhaAcesso); if (permite) { System.out.println("Permitido"); } else { System.out.println("Negado"); } } }
11. Para dar aumento ao Gerente, não podemos comandar (na subclasse Gerente) a ação Salário = Salário + valor , pois esta subclasse não tem acesso ao atributo salário, que é private na superclasse Funcionário: class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } void daAumento (double valor) { salário = salário + valor; } } Vai dar erro de compilação!
12. Para não dar erro, mudamos o atributo de salário (em Funcionário) de private para protected import java.util.Scanner; class Funcionário { String nome; protected double salário; double getSalário() { return salário; } void setSalário(double salário) { this.salário = salário; } }