Classes Abstratas

- Entendemos por classes abstratas as classes a partir das quais não é possível realizar qualquer tipo de instância. Membros que não são abstratos podem estar contidos dentro dessas classes, (métodos e variáveis normais), mas em sua declaração as classes abstratas deverão ter preferencialmente um ou mais métodos abstratos.
- Como medidas de se surança, as classes abstratas somente podem ser estendidas, sendo que a criação de um objeto a partir da mesma é um procedimento evitado. A implementação dos métodos abstratos será feita em classes estendidas (HERANÇA), tantos métodos abstratos a classe Pai conter.
- Os métodos abstratos na classe Pai não contem corpo.
- Caso a classe Filha não definir os métodos abstratos da classe Pai, a mesma se tornará abstrata.

Exemplo:
Classe Funcionários (Classe Pai) Classe com o método principal
abstract class Funcionarios {
   
    String Nome;
    int Salario;

    public String getNome() {
        return Nome;
    }

    public void setNome(String Nome) {
        this.Nome = Nome;
    }

    public int getSalario() {
        return Salario;
    }

    public void setSalario(int Salario) {
        this.Salario = Salario;
    }
  
    abstract void reajuste();
}
import javax.swing.JOptionPane;
public class Controle {
   
    public static void main(String args[]){
       
        Mecanico m = new Mecanico();
        Agendadora a = new Agendadora();
       
        m.setSalario(Integer.parseInt(JOptionPane.showInputDialog(null,"Entre com o salario","Salario do Mecânico",2)));
        m.reajuste();
       
        a.setSalario(Integer.parseInt(JOptionPane.showInputDialog(null,"Entre com o salario","Salario da Agendadora",2)));
        a.reajuste();
       
        JOptionPane.showMessageDialog(null,"Salario Mecanico   = "+ m.getSalario());
        JOptionPane.showMessageDialog(null,"Salario Agendadora = "+ a.getSalario());
       
        System.exit(0);
       
    }
   
}
Classe estendida   Mecânico Classe estendida  Agendadora
import javax.swing.JOptionPane;
public class Mecanico extends Funcionarios{
  
    int certificacao;
   
     void reajuste(){
        JOptionPane.showMessageDialog(null,"Calculando o novo salário","Cálculo",2);
        Salario += 200; //Polimorfismo.
    }
}
import javax.swing.JOptionPane;
public class Agendadora extends Funcionarios{
   
    int digitar;  
   
     void reajuste(){
        JOptionPane.showMessageDialog(null,"Calculando o novo salário","Cálculo",2);
        Salario += 300; //Polimorfismo.
    }
   
   
}
   

Exemplo de Herança

Criando a classe Pessoa
Esta é a classe Pai

public class Pessoa {
 String nome;
 int idade;
 String sexo;
}
Esta é a classe Mecânico que está herdando Pessoa.

public class Mecanico extends Pessoa{
 String funcao;
 double salario;
 String certificado;
}
 Toda classe que herdar Pessoa, irá herdar todos os seus atributos e seus métodos.
Esta é a classe Secretária que está herdando Pessoa.

public class Secretaria extends Pessoa {
  String funcao;
  double salario;
  String curso;
  String graduacao;
}
Temos aqui a classe de controle, que irá instânciar Mecânico e Secretària.

public class Controle {
 public static void main(String args[]){
     Mecanico   x = new Mecanico();
     Secretaria y = new Secretaria();
     
     x.nome   = "Zé";
     x.idade  = 30;
     x.sexo   = "Masculino";
     x.funcao = "Mecanico de carros";
     x.salario = 4000.00;
     x.certificado = "Manutenão de motores Otto";
     
     y.nome      = "Silvana";
     y.idade     = 20;
     y.sexo      = "Feminino";
     y.funcao    = "Secretária executiva";
     y.salario   = 10000.00;
     y.curso     = "Curso de Word";
     y.graduacao = "Secretariádo";
     
     System.out.println("Mecânico");
     System.out.println("Nome : " + x.nome + ". Idade : " + x.idade);
     System.out.println("Sexo : " + x.sexo);
     System.out.println("----");
     System.out.println("Salário : " + x.salario);
     System.out.println("Função  : " + x.funcao);
     System.out.println("Certificção na função : " + x.certificado);
     System.out.println("---------------------------------------------");
     System.out.println("Secretária");
     System.out.println("Nome : " + y.nome + ". Idade : " + y.idade);
     System.out.println("Sexo : " + y.sexo);
     System.out.println("----");
     System.out.println("Salário   : " + y.salario);
     System.out.println("Função    : " + y.funcao);
     System.out.println("Cursos extras : " + y.curso);
     System.out.println("Graduação :"  + y.graduacao);
          
     System.exit(0);
 }    
}