Variáveis em Java não seguem polimorfismo e substituição
Variáveis em Java não seguem polimorfismo. A substituição é aplicável apenas a métodos, mas não a variáveis. Em Java, se a classe filho e a classe pai têm uma variável com o mesmo nome, a variável da classe filho oculta a variável da classe pai, mesmo se seus tipos forem diferentes. Este conceito é conhecido como Ocultação de Variável . No caso de substituição de método , os métodos de substituição substituem completamente os métodos herdados, mas no ocultamento de variáveis, a classe filha oculta as variáveis herdadas em vez de substituí-las, o que basicamente significa que o objeto da classe Criança contém ambas as variáveis, mas a variável de Criança oculta a variável de Parent.
Portanto, quando tentamos acessar a variável dentro da classe Filha, ela será acessada a partir da classe Filha. Se estivermos tentando acessar a variável fora das classes Pai e Filho, a variável de instância é escolhida a partir do tipo de referência.
Exemplo
// Java Program Illustrating Instance variables
// Can not be Overridden
// Class 1
// Parent class
// Helper class
class Parent {
// Declaring instance variable by name `a`
int a = 10;
public void print()
{
System.out.println("inside B superclass");
}
}
// Class 2
// Child class
// Helper class
class Child extends Parent {
// Hiding Parent class's variable `a` by defining a
// variable in child class with same name.
int a = 20;
// Method defined inside child class
public void print()
{
// Print statement
System.out.println("inside C subclass");
}
}
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a Parent class object
// Reference Parent
Parent obj = new Child();
// Calling print() method over object created
obj.print();
// Printing superclass variable value 10
System.out.println(obj.a);
// Creating a Child class object
// Reference Child
Child obj2 = new Child();
// Printing childclass variable value 20
System.out.println(obj2.a);
}
}
dentro da subclasse C 10 20
Conclusão:
Variáveis em Java não seguem polimorfismo e substituição. Se estivermos tentando acessar a variável fora das classes Pai e Filho, a variável de instância é escolhida a partir do tipo de referência.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva