Vários pontos -chave para os quais você deve prestar atenção ao usar classes abstratas:
Uma classe que contém um ou mais métodos abstratos deve ser declarada como uma classe abstrata.
Declarar uma classe como uma classe abstrata não contém necessariamente métodos abstratos.
Acredita -se geralmente que métodos específicos não devem ser incluídos em classes abstratas.
Classes abstratas não podem ser instanciadas, ou seja, objetos desta classe não podem ser criados.
Exemplo Código:
A cópia do código é a seguinte:
importar java.util.*;
/**
* Este programa demonstra classes abstratas.
* @Version 1.01 2004-02-21
* @Author Cay Horstmann
*/
Public Class PersonTest
{
public static void main (string [] args)
{
Pessoa [] pessoas = nova pessoa [2];
// preenche o conjunto de pessoas com objetos de estudante e funcionário
pessoas [0] = novo funcionário ("Harry Hacker", 50000, 1989, 10, 1);
pessoas [1] = novo aluno ("Maria Morris", "Ciência da Computação");
// Imprima nomes e descrições de todos os objetos de pessoa
para (Pessoa P: Pessoas)
System.out.println (p.getName () + "," + p.getDescription ());
}
}
Pessoa de classe abstrata
{
pessoa pública (string n)
{
nome = n;
}
public abstract string getDescription ();
public string getName ()
{
Nome de retorno;
}
nome de string privado;
}
funcionário da classe estende a pessoa
{
funcionário público (string n, duplo s, int ano, int mês, int dia)
{
super (n);
salário = s;
Calendário GregoriaCalendar = New GregorianCalendar (ano, mês - 1, dia);
houteray = calendar.gettime ();
}
Public Double GetSalary ()
{
salário de retorno;
}
Data pública Gethirentay ()
{
retornar HIREDAY;
}
public string getDescription ()
{
retornar string.format ("um funcionário com um salário de $%. 2f", salário);
}
Public Void RaiseSalary (Double Bypercent)
{
aumento duplo = salário * desbaste / 100;
salário += elevação;
}
Salário duplo privado;
data privada HIREDAY;
}
estudante de aula estende a pessoa
{
/**
* @param n o nome do aluno
* @param m o major do aluno
*/
estudante público (string n, string m)
{
// Passa n para o construtor de superclass
super (n);
major = m;
}
public string getDescription ()
{
retornar "um aluno com especialização em" + major;
}
Principal de cordas privadas;
}
No bloco de código:
A cópia do código é a seguinte:
para (Pessoa P: Pessoas)
System.out.println (p.getName () + "," + p.getDescription ());
Em P.GetDescription (), o método que se referirá ao objeto subclasse da subclasse específica.
GetDescription () em classe pessoal não pode ser omitida porque o compilador permite apenas métodos de chamada declarados na classe.