Pessoal!!
Fiquei confuso agora com a herança.
Eu posso ter por ex 4 nives de heranca
A Super
B extends A
C extends B
d extends C
Se eu estiver acessando a classe “C” todos os atributos de “A” estao disponiveis pra mim?
Pessoal!!
Fiquei confuso agora com a herança.
Eu posso ter por ex 4 nives de heranca
A Super
B extends A
C extends B
d extends C
Se eu estiver acessando a classe “C” todos os atributos de “A” estao disponiveis pra mim?
Tudo depende do nível de acesso dos variáveis e métodos das suas classes, se os atributos e métodos da classe A forem públicos, sim, se forem privados não, se forem padrão ou protegido, sim se estiverem no mesmo pacote, caso estejam em pacotes diferentes o membro protegido poderá ser acessado por meio da herança.
Caso uma outra classe que não seja subclasse e esteja em outro pacote queira acessar os menbros da classe A, ela só terá acesso aos menbro públicos._
só uma coisa, onde lê-se menbro é membro rsrs, santa ignorância.
Exatamente como o anderline disse, depende do especificador de acesso, do membro, e também se ele se encontra no mesmo package ou nao.
O caso é que ‘C’ pode acessar ‘A’ , porém ‘A’ não pode acessar ‘C’ diretamente, a menos que crie uma instância para isso.
Abraços
eh como a galera falor depende do modificador de acesso um exemplo:
se vc declarar um metodo como private:
private void setMet(){}
esse metodo nao vai ser herdado por nenhuma class pq ele é unico, exclusivo da classe aonde ele foi declarado!! e também tem outro se for FINAL nao eh herdado tb!! percebeu… pq nao temos uma resposta direta a sua pergunta? ou seja um Sim e ou Não. devido a essa regras!!
e também tem outro se for FINAL nao eh herdado tb!!Isso não é verdade. O final serve apenas para não permitir que nenhuma subclasse sobrescreva um determinado método declarado com este modificador. Veja o exemplo a seguir:
class A{
public final void m() {
System.out.println("bla");
}
}
class B extends A{
public final void k() {
System.out.print("Hein? ");
m();
}
/*
* Descomente este método e terá um erro de compilação informando que não dá pra
* sobrescrever métodos final
*/
// public void m() {
// System.out.println("Nunca serei impresso... ;-(");
// }
}
class Teste{
public static void main(String[] args) {
B b = new B();
b.m();
System.out.println();
b.k();
}
}
Não Mantu, o camilolopes quis dizer que uma classe declarada como final, teoricamente não pode ser herdada. 
entao me expressei mal, pq uma class marcada como final ela nao pode ser extends… ou to errado?
Aí sim. Mas a forma como vc escreveu:
A concordância dessa frase leva claramente a crer que você estava falando do método (“não é herdad[u]o[/u]”, concordando em gênero com “método”, que é masculino, e não com “classe”, que é feminino)
Com certeza você se expressou mal. Foi isso.
Entao eu declarei tudo como public.
E estou num nivel la embaixo mas nao consigo acessar nenhum atributo de A.
Da erro em execução!
Bom na real é assim óh.
A minha ideia é criar o meu proprio framework.
Fiz um levantamento e notei um conjunto de informações padrao em pra ticamente todos os meus objetos (nome, id, cod, …) dai entao a ideia deixar tudo pronto em diversas classes e depois só dar um extends no que eu quero. Meu desenvolvimento é web, dai comecei pelo pacote model, depois negocio e Servlets. Na compilação esta tudo ok, vai lindo, só que em tempo de execução na minha JSP nao da certo ( erro: javax.servlet.ServletException: com/br/model/framework/DadosBean
Este dadosBean que aparece no erro seria dois niveis acima da classe cliente por exemplo.
Dai eu tenho:
FrameworkBean
DadosBean
CnpjBean || CpfBean
E por fim a classe ClienteBean.
Todos os atributos e metodos são publicos.
Seria um problema de entendimento no conceito herança?
Preciso usar interfaces neste caso?
Cara posta os seu códigos._