Java多态

一、方法的重写

Override,方法的覆盖,运行时多态

重载(Overload)与重写(Override)的区别?
意义:子类与父类之间,不同子类之间,在同一个行为上有不同的实现

代码:子类需要重新实现(重写)父类的某一个行为(方法)
子类的重写方法必须与父类的方法名是同名,同参,同返回值类型
子类重写方法的访问权限不能低于父类方法

二、多态的实现和现实意义

一种参数可以适配多种类型,实现不同类型同一种行为的调用

开闭原则:程序对扩展开放,对修改关闭。

实现多态的条件:
1.为多态支持的类型抽取共同的父类 — 构建一个继承体系
2.共同的行为在父类中定义,子类中进行重写 — 通过重写实现不同类的实现细节
3.构建多态方法,它的参数是使用父类类型 —利用上溯造型支持不同类型的传入
4.多态方法内调用重写方法 ---- 实现多态的效果

多态的优点:
实现了开闭原则,在扩展新的类型时,多态方法不用修改

三、实现多态的过程中遇到的问题

问题1:有些场景下,抽取的父类是一种概念,没有实物。
父类不是具象化的东西,本身是抽象的
在程序上不应该出现父类的实例化
如 animal a=new animal();//不能写,不可以实例化

问题2:父类中定义的共同行为,在父类中无法编写细节

问题3:在扩展新的类型时,可能忘记重写父类的行为。

四、抽象关键字abstract

抽象关键字用来修饰类和方法
抽象类:不能实例化,解决问题1
抽象方法:不需要给出方法的实现,只需要方法定义即可,解决了问题2
子类继承父类后,必须实现(强制重写)父类中所有的抽象方法,解决问题3

现实意义:一些概念性的父类,一些只能给出定义不能给出实现的行为

抽象类:
1.抽象类不可以实例化,但是允许有构造方法(给子类使用)
2.抽象类在继承体系中处于父类的位置
3.抽象类中允许有属性,构造方法,普通方法,抽象方法

抽象方法
1.抽象方法没有方法体{},只有一个方法定义
2.抽象方法必须定义在抽象类或接口中,不能定义在普通的类中
3.一个普通(抽象类不用)的类继承了抽象类后,必须实现其中所有的抽象的方法。

五、接口interface

类的关键字是class,接口的关键字是interface。

接口的特点:
1.不能实例化
2.允许作为对象类型,通过"子类"去实例化
3.接口中只能声明常量,公有抽象方法,Lamda表达式
4.一个Java类只能继承一个直接的父类,但是可以同时"实现"多个接口

接口的意义:
1.对Java单继承的补充
2.接口是对某种行为(某种能力)的描述

public class 子类 extends 父类 implements 接口1,接口2,接口3

public class 子类 implements 接口A,接口B

如果一个父类能被设计成一个接口,那就不设计成类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值