segue a pergunta do livro:
a resposta segundo o livro é: D
mas… COMO? de onde saiu esse Y ai na subclasse???
EDIT: desconsiderem… variaveis e metodos estaaticos sao sim “herdaveis”…
sim… “herdaveis” com aspas
segue a pergunta do livro:
a resposta segundo o livro é: D
mas… COMO? de onde saiu esse Y ai na subclasse???
EDIT: desconsiderem… variaveis e metodos estaaticos sao sim “herdaveis”…
sim… “herdaveis” com aspas
[quote]desconsiderem… variaveis e metodos estaaticos sao sim “herdaveis”…
sim… “herdaveis” com aspas[/quote]
Sim, a diferença da variável estática é que ela pode ser acessada sem instâncias do objeto, pode ser chamada também de variável de classe, e elas podem ser usadas em métodos estáticos e não estáticos, mas as variáveis de instância não estáticas não podem ser acessadas em métodos estáticos.
Sim podem ser herdadas sim o que define se uma subclasse pode ou não usar um membro da superclasse são os tipos de acesso se for public , protected, default, private. Neste caso está default então pode ser usado por qq subclasse no mesmo pacote.
E se algum dos modificadores restringirem a variável, se a subclasse herdar os atributos com restrição, na verdade ela terá os atributos, porém não poderá utilizá-los e para contornar isso é preciso fazer cast para a super classe, lembrando que a implementação precisa estar na mesma classe que contém o atributo se for private.
[code] SubClasse objSubClasse= new SubClasse();
SuperClasse objSuperClasse;
objSuperClasse = (SuperClasse) subClasse;
objSuperClasse.teste = 4;[/code]
Variáveis estáticas não são herdadas, pois não existem objetos para fazer a herança.
A única coisa que ocorre é que elas ficam acessíveis pelo “nome” e no escopo da classe filha, porém, trata-se da mesma variável da classe pai. Hoje, é considerado uma má prática de programação acessar uma variável estática sem dizer explicitamente o nome da classe onde ela foi declarada, como faz esse exercício.
Aliás, códigos de certificação são geralmente um exemplo de práticas abomináveis de programação.
[quote=faeldix]segue a pergunta do livro:
a resposta segundo o livro é: D
mas… COMO? de onde saiu esse Y ai na subclasse???
EDIT: desconsiderem… variaveis e metodos estaaticos sao sim “herdaveis”…
sim… “herdaveis” com aspas[/quote]
Variáveis estáticas não são herdadas. Elas simplesmente são visiveis a todas as instancias da classe.
Ao invocar o construtor de Minor ele invoca super(y) que invoca o contrutor de Uber(y) que invoca this() que é o construtor sem paremtros. Aqui acontece y++ , logo y = 3.
Depois o contrutor de Uber faz y = y * 2 , logo y = 6.
Depois o contrutor de Minor faz y = y + 3 , logo y = 9.
A resposta tem que ser D, mesmo.
As pessoas ficam nessa de “herda não herda”. Isso é irrelevante. O que interessa é se ha ou não acesso (visibilidade) . Variáveis estáticas são - por definição- visiveis a todas as instancias da classe, mesmo que definidas private.