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()。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值