Propriedades de classe abstrata/interface

3 respostas
Leandro

Lá vou eu denovo…

Eu tenho uma classe Pai, que, não sei bem ao certo se deveria ser uma classe abstrata ou uma interface.

public interface HtmlComponent {
   public void setName(String name);
   public String getName();
}

E a filha que implementaria esses métodos. Até aí OK.
Mas a filha também teria que ter uma variável “private” com o nome de “name”, e basicamente todas as filhas teriam… O que eu queria era colocar isso na interface também… tem como?? To viajando??
Aí vem as questões… não queria que isso ficasse acessível para as outras classes que não herdam deste Pai aí… e na prática seriam várias dessas variáveis…

É melhor eu esquecer isso e colocar em todas as Filhas a chamada dessas variáveis??

Valeu!! :slight_smile:

3 Respostas

Rafael_Afonso

Interfaces podem apenas ter métodos públicos (protected acho que não) e Constantes como:

public static final int CONST = 1;

Se você faz questão que sua interface tenha um atributo, pooderia transformar sua interface em uma classe abstrata:

public abstract class HtmlComponent {
   private String name; // pode protected
   public abstract void setName(String name);
   public abstract String getName();
}

Mas aí teria as restrições sobre herança múltipla.

Bos sorte,

Leandro

Esse segundo exemplo é perto do que eu estava querendo usar…
Mas eu recebo um lindo:

name has private access in HtmlComponent

:stuck_out_tongue:

Rafael_Afonso

Como está fazendo nas clsses derivadas? Se fizer :

this.name = myName;

e name for atributo privado da classe pai então não vai dar certo.
Se for este o caso altere a acessibilidade de name de private para protected.

Criado 13 de junho de 2003
Ultima resposta 13 de jun. de 2003
Respostas 3
Participantes 2