classes
abstratas não têm atributos?
A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementação incompleta - a parte genérica dessa funcionalidade - que é compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas completa a funcionalidade da classe abstrata adicionando um comportamento específico. Uma classe abstrata normalmente possui métodos abstratos. Esses métodos são implementados nas suas classes derivadas concretas com o objetivo de definir o comportamento específico. O método abstrato define apenas a assinatura do método e, portanto, não contém código.
Por outro lado, as classes concretas implementam todos os seus métodos e permitem a criação de instâncias. Uma classe concreta não possui métodos abstratos e, geralmente, quando utilizadas neste contexto, são classes derivadas de uma classe abstrata.
A idéia da classe abstrata é ter métodos e atributos genéricos que podem ser usados em diversas outras classes com o mesmo gênero. Por exemplo, no seu código, toda pessoa tem (nome, telefone, idade .. ), se você for criar tipos mais específicos de pessoas, você dá um extends Pessoa e coloca os atributos/métodos mais específicos. Por exemplo, se for um Atendente, teoricamente um Atendente é uma Pessoa. Logo, ele tem "tudo" o que uma Pessoa tem, e pode fazer "tudo" que uma pessoa pode fazer também. Sendo assim, você não precisa copiar os atributos/métodos em todas as classes específicas. Já pensou você colocar String nome, int telefone, int idade em todas as classes ? :/
http://www.guj.com.br/java/117966-classes-abstratas
http://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o)