Java 转型(向上或向下转型)详解及简单实例
什么是Java转型?
Java转型是指将一个对象视作为另一个对象的过程。Java中包含向上转型和向下转型两种操作。
向上转型(upcasting)
向上转型是将一个子类对象转换为父类对象。在Java中,子类继承了父类,所以子类应该可以替代父类的位置,因为子类拥有父类的全部属性和方法。向上转型的目的是为了将一个子类对象赋值给一个父类对象,实现多态。
Parent p = new Child(); // Child是Parent的子类
向下转型(downcasting)
向下转型是将一个父类对象转换为子类对象。在Java中,向上转型将子类对象转换成父类对象,但实现这种转换时,一些方法和属性特有的子类方法和属性被删除或屏蔽了。因此,需要向下转型,将父类对象返回给子类对象,恢复这些子类方法和属性的功能。如果在代码中需要涉及特定类型的方法和属性时,则需要向下转型。
Parent p = new Child(); // Child是父类Parent的子类
Child c = (Child) p; // 下转,p指向的是一个Child对象,所以可以转换
转型的实例
向上转型(Upcasting) 的示例
public class Parent {
public void message() {
System.out.println("This is a Parent class");
}
}
public class Child extends Parent {
public void message() {
System.out.println("This is a Child class");
}
}
public class UpCasting {
public static void main(String[] args) {
Child obj = new Child();
Parent p = obj; // 向上转型
p.message();
}
}
在上面的示例中,向上转型的主要部分是 Parent p = obj;
这一行代码。它将 Child 对象转换为 Parent 对象,然后调用了 message()
方法。具体输出内容取决于 Child
和 Parent
中的实现。
向下转型(Downcasting) 的示例
public class Animal {
public void sound() {
System.out.println("Animal is making a sound");
}
}
public class Dog extends Animal {
public void sound() {
System.out.println("Dog is barking");
}
}
public class DownCasting {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 向上转型
myAnimal.sound(); // Dog is barking
Dog myDog = (Dog) myAnimal; // 向下转型
myDog.sound(); // Dog is barking
}
}
在上面的示例中,向上转型的主要部分是 Animal myAnimal = new Dog();
这一行代码,它将 Dog 对象转换为 Animal 对象。然后通过调用 myAnimal.sound();
方法来执行 Dog
中 sound()
方法。最后,通过 (Dog) myAnimal
将 myAnimal
转换回 Dog
对象,然后执行 myDog.sound()
以再次调用 Dog
中的 sound()
方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 转型(向上或向下转型)详解及简单实例 - Python技术站