多态与抽象

这里写图片描述

多态与抽象

多态与抽象是javaoo中的两大特征。

多态的概念
多态是指一个对象有多种形式的能力。一个类的子类可以定义它们唯一的行为,同时共享父类的某些相同特征

多态的类型
多态可以分为静态多态和动态多态。
静态多态指的是程序在编译时,系统就能决定调用哪个方法,所以也称为编译时多态。
静态多态实现的方式就是方法重载
动态多态指在运行中系统才能动态确定方法所指的对象,所以也称为运行时多态。
动态多态主要通过动态绑定和重写的机制来实现。

动态绑定机制
动态绑定,是指在运行时根据具体对象的类型进行绑定。

instanceof关键字:
instanceof关键字用于判断运行时对象的真正类型。

对象 instanceof 对象类型

转型技术

向上转型技术(数据类型转换):
引用数据类型的向上转型,是指子类向弗雷转型,编译器会自动识别。
能自动转型成功,原因是:父类的范围大于子类的范围
一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当作一个父类类型。引用数据类型只适用于父子之间,不能去玩:指鹿为马。
向下转型技术
父类的引用可以指向子类的实现是因为子类的实例,拥有完整的父类的所有值数据。
引用数据类型向下转型存在风险,不是一定能转型成功。如果希望转型成功,必须满足以下两个条件:
1. 必须是父类的引用指向一个子类的的实现
2. 子类的引用最终必须指向相同类型的子类实现

多态应用场景
多态参数
当方法的某个形式参数是一个引用时,与该引用兼容的任何对象都可以传递方法,从而循序方法接受不同数据类型的形式参数。
异构集合
把不同类型的对象装入一个集合中

抽象

抽象的概念
如果我们不需要类的实例时,就可以将类设计成为一个抽象类。所谓抽象类,是不能被实例化的类。在抽象类中,类的所有其它功能都存在,成员变量、方法、构造器都可以用同样的方式访问。我们只是不能创建抽象类的实例。

抽象的特点
抽象类可以继续编写属性、行为、初始化块、静态常量,甚至连构造都可以。
但是构造器此时的作用,并非是为了创建对象,而是用于分配成员成量的存储空间。
但是抽象类中,不一定必须要有抽象方法(语法上)

抽象方法的作用
Abstract在定义方法的时候,最大的作用:用来规范子类的行为

方法申明为抽象的两个条件
将父类声明为抽象后,仅有的改变是我们不能再实例化一个父类对象,其他的所有保持不变。
将一个方法声明为抽象方法有两个结果:
1. 类必须声明为抽象类。
2. 任何子类必须重写抽象方法,除非子类本身也是抽象的。

抽象类的好处:强制要求子类实现父类的抽象方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值