Java多态小结

多态是Java三大特性之一(封装、继承、多态)。多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。

多态分为方法和对象两种:方法的多态指方法的重载和覆写,这两个概念好理解;对象的多态(ps.不知道这样叫对不对)分为向上转型和向下转型,重点来介绍这两种转型:

向上转型

class Animal{
    public void print(){
        System.out.println("animal!");
    }
}

class Person extends Animal{
    public void print(){
        System.out.println("person!");
    }
    public void print1(){
        System.out.println("person1!");
    }
}

//可以这样定义
Animal t = new person();

这样定义出来的对象,调用方法的时候我们只需要看等号右边开辟的是什么类型,使用的方法有没有被覆写,若有则会使用该类的方法,若子类中特有的方法则不能使用。如上例中 t.print() 会输出person!而不是animal!t.print1()会报错。

那么这样设计的作用是什么呢?在开发中我们会调用不同的子类覆写方法,这样定义可以直接将方法参数进行统一。如方法:print(Animal a),这样上述的对象t可以直接传入,其他的子类也可以向上转型的方式来传入。可能我们使用重载的方法也能实现同样的功能,但是若子类已有上百上千种呢,我们需要为每个子类定义一个方法这样太繁琐了。

向下转型

向下转型可以理解为一种强制转换,这样做有一定的风险。两个没有任何关系的实例不能进行强制转换。

作用:为了解决向上转型时无法使用子类中的特有方法。

使用instanceof关键字来判断是否安全:t instanceof Animal //true

注意:使用向下转型前,一定会先有向上转型!例如:为了使用print1()方法,需要 Person p = (Person) t; 再用p来调用print1()。

 

 

你可能感兴趣的:(Java)