举例:通过一个小的继承,可以看出,如果不继承,在编译的时候就会报错
public class PolymorphismTest {
public static void main(String[] args) {
// 向上转型
// ----------------------------------------------------------------
// 这就是多态,左边是父类,右边是子类创建一个对象
Polymorphism1 pp=new Polymorphism2();
// 编译时看左边,pp是父类对象,.show():是子类重写父类的方法
// 通过父类的对象,指向子类的重写方法
pp.show();
// ----------------------------------------------------------------
// 向下转型,
// ----------------------------------------------------------------
// 强转,跟int数据类型转byte数据类型的格式相似
// int num1=100;
// byte num2=(int)num1;
// Polymorphism3 pp2 = (Polymorphism3)pp; //报错,因为,Polymorphism3不是Polymorphism1的子类
- Polymorphism2 pp2 = (Polymorphism2)pp;
- pp2.show();
// 简单我们可以直接看的出来,但是很多时候我们是不确定的,这时候就要引入instanceof关键字了
// **********************************************
// instanceof返回值是布尔类型的数据
- if(pp instanceof Polymorphism2){
- // 如果为真就强转
- Polymorphism2 pp3 = (Polymorphism2)pp;
- pp3.show();
- }
// ----------------------------------------------------------------
}
}
class Polymorphism1{
public void show(){
System.out.println("我是父类");
}
}
class Polymorphism2 extends Polymorphism1{
// 重写父类里的方法
public void show(){
System.out.println("我是子类(1)的方法");
}
}
class Polymorphism3{
// 重写父类里的方法
public void show(){
System.out.println("我是子类(2)的方法");
}
}