Variaveis estaticas são herdadas?

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.