多态性

现在已经学习完了关于继承的所有概念,但是并不意味着只要使用继承就可以实现代码的全部重用,而在继承之后又有了一个重要的核心概念:多态性。

在Java里面对于多态的核心表现主要有以下两点:

●方法的多态性:

|-方法的重载:同一个方法名称可以根据参数的类型及个数的不同调用不同的方法体;

|-方法的覆写:同一个父类的方法,可能根据实例化的子类的不同也有不同的实现。

●对象的多态性(前提:方法覆写):

|-【自动,90%】对象的向上转型:父类 父类对象 = 子类实例;

|-【强制,1%】对象的向下转型:子类 子类对象 = (子类)父类实例;

      |-9%是不进行转型,例如:String;

不管是否发生了向上转型,其核心的本质还是在于:你使用的是哪一个子类(new在哪里),而后你调用的方法是否被子类所覆写了。

向下转型指的是将父类对象变为子类对象,但是在这之前需要首先明确一个核心概念,为什么需要向下转型?当你需要使用到子类扩充操作的时候就需要采用向下转型。

但是并不是所有的父类对象都可以向下转型【此概念一般开发中用不到】:如果要想进行向下转型,操作之前一定要首先发生向上转型,否则在转型时会出现:ClassCastException。

但是现在就有一个问题出现了,如果向下转型可能存在有隐患,那么如何转型菜靠谱呢?最好的做法是先进行判断,而后再进行转型,那么就可以依靠instanceof关键字来实现了,此关键字的使用语法如下:

●子类对象 instanceof 类,返回的是boolean型数据;

通过以上的分析就可以清楚,对象的向上转型有一个最为核心的用途:操作参数统一。

总结:

1. 对象多态性实现的核心在于方法的覆写;

2. 通过向上转型可以实现接收参数的统一,而向下转型可以实现子类扩充方法的调用(一般不操作向下转型);

3. 两个没有关系的对象是不能进行转型的,一定会发生ClassCastException,所有向下转型是存在有安全隐患的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在继承之后,有了多态性 多态的核心本质:1.方法的多态性:方法的重载:同一个方法的名称我们可以根据参数的类型以及个...
    半心人6阅读 308评论 0 0
  • 面向对象的特征三:多态性 1、多态性指的是什么?多态性,可以理解为一个事物的多种表现形态。 1)方法的重载与重写 ...
    Girl_endless阅读 397评论 0 2
  • /* 面向对象的特征三:多态性 1.多态性指的是什么?多态性,可以理解为一个事物的多种表型形态。 1)方法的重载与...
    DarkMonster阅读 445评论 0 0
  • 同样一件衣服,一个挂在商场里面明码标价,另外一个在私人开的服装店里面挂着,同样的原价打九折售卖,在哪个地方买会让你...
    cora的生活手册阅读 151评论 0 0
  • 加班时阿忠带着对于社会深深的恨意问候了领导及其亲属之后收到了阿花的红色炸弹,喜帖金箔,反社会人格跃然纸上,软磨硬泡...
    当年热血阅读 1,626评论 0 1