第二十讲
-
package lianxi; public class Test2 { public static void main(String[] args){ Animal animal = new Dog(); Animal animal2 = new Animal(); animal2 = animal; animal2.sing(); } } class Animal { public void sing (){ System.out.println("animal is singing"); } } class Dog extends Animal { public void sing(){ System.out.println("Dog is singing"); } }
-
一共有两种类型的强制类型转换:
-
向上的类型转换(upcast):比如说将dog类型转换为Animal类型,即将子类型转换为父类型。对于向上类型转换,不需要显示指定。
package lianxi; public class Test2 { public static void main(String[] args){ //向上类型转换 Dog dog = new Dog(); Animal animal = dog; animal.sing(); } } class Animal { public void sing (){ System.out.println("animal is singing"); } } class Dog extends Animal { public void sing(){ System.out.println("Dog is singing"); } }
-
-
向下的类型转换(downcast):比如将Animal类型转换为dog类型。即将父类型转换为子类型。对于向下类型转换,必须要显示指定(必须要使用强制类型转换)。
package lianxi; public class Test2 { public static void main(String[] args){ //向下类型转换 Animal a = new Dog(); Dog dog = (Dog)a; dog.sing(); } } class Animal { public void sing (){ System.out.println("animal is singing"); } } class Dog extends Animal { public void sing(){ System.out.println("Dog is singing"); } }