Um processo de conversão de um tipo de dados para outro é conhecido como Tipografia e Upcasting e Downcasting é o tipo de conversão de tipo de objeto. Em Java, o objeto também pode ser convertido em tipo como os tipos de dados. Pai e Criança objetos são dois tipos de objetos. Portanto, existem dois tipos de conversão de tipo possíveis para um objeto, ou seja, Pai para filho e Filho para pai ou posso dizer Upcasting e Downcasting .
Em Java , o objeto também pode ser convertido em tipo como os tipos de dados. Pai e Objetos filhos são dois tipos de objetos. Portanto, existem dois tipos de conversão de tipo possíveis para um objeto, ou seja, Pai para filho e Filho para pai ou posso dizer Upcasting e Downcasting .
Tipografia é usado para garantir se as variáveis são processadas corretamente por uma função ou não. Em Upcasting e Downcasting , nós tipificamos um objeto filho para um objeto pai e um objeto pai para um objeto filho simultaneamente. Podemos realizar o Upcasting implícita ou explicitamente, mas o downcasting não pode ser implicitamente possível.
Vamos nos aprofundar nesses dois tipos de fundição de objetos:
jquery com um clique
1) Upcasting
Upcasting é um tipo de conversão de tipo de objeto em que um objeto filho é tipificado para um objeto de classe pai . Usando o Upcasting, podemos acessar facilmente as variáveis e métodos da classe pai para a classe filha. Aqui não acessamos todas as variáveis e o método. Acessamos apenas algumas variáveis e métodos especificados da classe filha. Upcasting também é conhecido como Generalização e Alargamento .
UpcastingExample.java
imprimir array em java
class Parent{ void PrintData() { System.out.println('method of parent class'); } } class Child extends Parent { void PrintData() { System.out.println('method of child class'); } } class UpcastingExample{ public static void main(String args[]) { Parent obj1 = (Parent) new Child(); Parent obj2 = (Parent) new Child(); obj1.PrintData(); obj2.PrintData(); } }
Saída:
2) Downcasting
Upcasting é outro tipo de conversão de tipo de objeto. No Upcasting, atribuímos um objeto de referência de classe pai à classe filha. Em Java, não podemos atribuir um objeto de referência de classe pai à classe filha, mas se realizarmos downcasting, não obteremos nenhum erro em tempo de compilação. No entanto, quando o executamos, ele lança o 'ClassCastException' . Agora a questão é: se o downcasting não é possível em Java, então por que ele é permitido pelo compilador? Em Java, alguns cenários nos permitem realizar downcasting. Aqui, o objeto da subclasse é referido pela classe pai.
Abaixo está um exemplo de downcasting em que os cenários válidos e inválidos são explicados:
DowncastingExample.java
//Parent class class Parent { String name; // A method which prints the data of the parent class void showMessage() { System.out.println('Parent method is called'); } } // Child class class Child extends Parent { int age; // Performing overriding @Override void showMessage() { System.out.println('Child method is called'); } } public class Downcasting{ public static void main(String[] args) { Parent p = new Child(); p.name = 'Shubham'; // Performing Downcasting Implicitly //Child c = new Parent(); // it gives compile-time error // Performing Downcasting Explicitly Child c = (Child)p; c.age = 18; System.out.println(c.name); System.out.println(c.age); c.showMessage(); } }
Saída:
Por que precisamos de Upcasting e Downcasting?
Em Java, raramente usamos Upcasting . Usamo-lo quando precisamos desenvolver um código que lide apenas com a classe pai. Downcasting é usado quando precisamos desenvolver um código que acesse comportamentos da classe filha.
int para string em java
Diferença entre Upcasting e Downcasting
Estas são as seguintes diferenças entre Upcasting e Downcasting:
Sim não | Upcasting | Downcasting |
---|---|---|
1. | Um objeto filho é convertido em um objeto pai. | A referência do objeto da classe pai é passada para a classe filha. |
2. | Podemos realizar Upcasting implícita ou explicitamente. | O downcasting implícito não é possível. |
3. | Na classe filha, podemos acessar os métodos e variáveis da classe pai. | Os métodos e variáveis de ambas as classes (pai e filho) podem ser acessados. |
4. | Podemos acessar alguns métodos especificados da classe filha. | Todos os métodos e variáveis de ambas as classes podem ser acessados realizando downcasting. |
5. | Pai p = novo Pai() | Pai p = novo Filho() Criança c = (Criança)p; |