Java 第三大特性--多态

从实现方法上看,java实现多态的三种方式:重写和重载,接口,抽象类和抽象方法

重写和重载

重写是指在不改变父类函数的参数,返回的前提下,修改函数的实现。
重载可以修改父类函数的参数,方法体以及返回,但不改变父类函数的函数名。

抽象方法与抽象类

抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类,
抽象方法仅仅是声明,而没有具体的方法实现,
构造函数和类函数(static)不能设置为抽象函数
抽象类不能实例化,需要继承并实现抽象方法后才能实例化

接口

接口是一系列抽象方法的集合,强调一下,是抽象方法。平时编程的时候,接口函数前的修饰符是没有abstract修饰符的,但是会被隐式地指定为抽象方法。接口中的方法默认是public abstract方法,不能是其他修饰符。
接口无法被实例化,但可以被实现。
一个实现接口的类必须实现接口中的所有方法,除非这个类是抽象类。

Java中子类继承只能继承一个父类,却可以实现多个接口中的方法。

从本质上来看,编译器实现多态的方式有两种:编译时多态和运行时多态。

编译时多态

重载一定是编译时多态,因为重载函数的返回类型和参数都不同,所以在编译时,编译器就知道执行的是哪一个重载函数;
重写不一定是编译时多态,只有当对象引用的是本类的对象时是编译多态。在这种情况下,编译器是可以确定,调用的方法肯定是子类中重写后的方法。

运行时多态

除了以上提到的两种情况,其他的多态都是运行时多态。拿继承举个例子,一个父类对象引用了子类的对象,那么在运行时,编译器会先去查找子类中有没有该方法的实现,要是找到了,就调用子类中的方法。如果子类没有该方法的实现,那么就会调用父类的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值