Java 多态小结

2023-04-04  本文已影响0人  笔头还没烂
  1. 向上转型

    • 也称隐式转型、自动转型(小类转型为大类)

    • 父类引向子类实例,可以调用子类重写父类的方法以及父类派生的方法(即定义在父类中的方法),无法调用子类独有方法

      • 补充:父类中的静态方法无法被子类重写,所以向上转型之后,只能调用父类原有的静态方法。示例代码如下:

        (1)父类 Animal 类:

        public class Animal {
            //方法:说话
            public static void say() {
                System.out.println("动物都有说话的能力");
            }
        }
        

        (2)子类 Cat 类:

        public class Cat extends Animal{
            //方法:说话
            public static void say() {
                System.out.println("猫也有说话的能力");
            }
        }
        

        (3)测试类:

        import com.animal.Animal;
        import com.animal.Cat;
        
        public class Test {
            public static void main(String[] args) {
                Animal one = new Animal();
                //向上转型、隐式转型、自动转型 ----> 父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法
                Animal two = new Cat();
                two.say();
            }
        }
        

        输出结果如下:

        动物都有说话的能力

        可以看到,这里 two 虽然是 Cat 类的实例,但是因为是转成父类引用,所以只能调用父类原有的静态方法。

  2. 向下转型

    • 也称强制类型转换
    • 子类引用指向父类对象,此时必须进行强转
    • 强转后可以调用子类特有的方法。
    • 但必须满足转型条件才能进行强转
    • 可以借由 instanceof 运算符来判断是否满足类型转换的条件
上一篇 下一篇

猜你喜欢

热点阅读