Para cada método que faça entrada de dados inclusive o main() é preciso adicionar throws IOException.
Contrutores: São métodos especiais inicializados após cada criação de novos objetos e levam o nome da classe.
Classes Abstratas: São classes que não podem ser instânciadas. Somente suas subclasses podem ser instânciadas.
public abstract class Semafro
Interface: Semelhante a uma classe abstrata, exceto que ela não possui nenhum método concreto ou variávies de instância.
Qualquer classe que implemente uma interface deve implementar todos os métodos especificados na interface.
public interface Connection
{
public abstract void commit();
}