Imagine que desejemos ter dois atributos: origem_x e origem_y, em todos os objetos que representem uma Forma. Como uma interface não pode conter atributos, será preciso converter Forma para uma classe abstrata que chamaremos de Forma2, como segue:
public abstract class Forma2 { //Atributos private int origem_x ; private int origem_y ; //Construtor public Forma2() { this. origem_x = 0; this. origem_y = 0; } //Classes reais public int getOrigemX() { return this.origem_x; } public int getOrigemY() { return this.origem_y; } public void setOrigemX(int x) { this.origem_x = x; } public void setOrigemY(int y) { this.origem_y = y; } //Classes abstratas public abstract float area(); public abstract float perimetro(); public abstract void mostrar(); }
Note que a declaração de métodos abstratos foi feita incluindo a palavra-chave abstract antes do nome do método e terminando a declaração por ponto e vírgula em lugar de abre e fecha chaves.