74、多态性(129)

1、多态性的概念

2、多态性的两种情况

3、对象的多态性

4、多态性小结

掌握多态性的程度就可以看出对面向对象掌握的多少

 

1、多态性的概念

1、多态是面向对象三大特性之一

2、什么是多态性

 

 

三大特性:封装、继承、多态

面向对象四大特征:封装、继承、多态、抽象

 

多态:多种形态

 

2、多态性的两种情况

1、多态性我们大概可以分为两类

(1)方法的重载与重写

(2)对象的多态性

 

方法重载:同一类中同返回值同方法名参数列表不同

方法重写:子类继承的方法,且方法体不同

 

3、对象的多态性

对象的多态性是从继承关系中的继承多个类而来

 

向上转型:将子类实例转为父类实例

格式:父类  父类对象=子类实例; →自动转换

以基本数据类型操作为例:int i=’a’;

(因为char的容量比int小,所以可以自动完成,char两个字节,int四个字节)

 

子类的实例在堆内存中,而声明的父类对象则是在栈内存中,这里就是让父类声明的对象指向子类的实例,在栈内存中储存的地址就是子类的实例在堆内存中的地址

 

切记抽象类里的抽象方法一定要加abstract,而接口中一切皆默认为抽象,可不以加。

 

具体的实现中如何体现多态的概念了,把类(类型)看做什么了?

八种基本类型

引用类型(自定义类型、类库中已经定义好的类)

 

小瓶水往大瓶装没问题,大瓶水往小瓶装可能就装不小,强制转换可能发生精度溢出就类似于小瓶装不下水漏了出来

 

小变大自动转换

大变小强制转换

 

父类是大的,因为它越抽象表现的东西越多

 

Man extends Person

按照口语上来理解记忆

Man是Person,继承什么就是什么喔!

Person是Man就没不行,没这个说法。

 

两种运用例子(向上转型)

1、狼装成羊,将父类中的狼方法在继承的子类中覆写为羊方法,这样用上转对象调用方法时,就是狼类型调用了羊方法,也就是狼装成了羊。

 

子类覆盖了父类的方法,运行时看new谁的对象,new谁的对象调用谁的方法

 

2、Person这个类型,有两个子类Women、 Man,new两个子类的对象时,就有两种不同的形态。每一种形态里都有不同的方法和属性。   也就是面向对象编程思想中,对象的不同行为和特征

 

向下转型:将父类实例转换为子类实例

格式:子类  子类对象=(子类)父类实例; 强制转换

以基本数据类型操作为例:char c=(char)97;

因为整型是4个字节比char2个字节要大,所以需要强制完成

 

java.lang.ClassCastException   类型转换异常

没有父子关系的两种类型不能强制转化哦

可以编译,但是运行时会出现异常

编程思想:人是父类,男人是人,女人是人,但男女之间不能强制转换

 

 

4、多态性小结

1、方法的重载重写就是方法的多态性表现

2、多个子类就是父类中的多种形态

3、父类引用可以指向子类对象,自动转换(隔几代也行,爷爷都行)

4、子类对象指向父类引用需要强制转换(注意:类型不对会报异常)

5、在实际开发中尽量使用父类引用更利于扩展:面向接口编程,面向抽象类编程)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值