Propriedades de classe abstrata/interface

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:

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,

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

name has private access in HtmlComponent

:stuck_out_tongue:

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.