第十二章.多态

本文详细介绍了Java编程中的多态性概念,包括多态的定义、构成条件、成员特点以及好处与弊端。多态允许使用父类类型引用子类对象,实现灵活的代码设计。在多态情况下,构造器按常规执行,实例变量遵循原始类型,而实例方法会调用子类重写的方法。此外,文章还讨论了类型转换、`instanceof`关键字的使用,并强调了多态在代码抽象和灵活性方面的优势,同时也指出其限制了对子类特有方法的直接访问。
摘要由CSDN通过智能技术生成

一、多态

多态:事物的多种形态(编译时形态和运行时形态不是一样的);
单态:事物的单一形态(编译时形态和运行时形态是一样的);

其中,对象从无到有整个过程有"编译时形态"和"运行时形态"。

生活中的多态,如:
叫Sam的那只猫:桌上的这只(小动物),这只(哺星人).....

程序中多态构造成前提条件:
1.必须有继承或者实现关系;
2.必须含有方法的重写(没有方法重写代码不会编译报错,但是这样的多态没有在何意义);
3.如果继承关系:父类的引用指向子类对象(父new子)
  如果实现关系:父接口的引用指向实现类对象(父接口new实现类)
  特殊的第三种方式:子类构造器中的super()

多态的格式:
1.继承关系:父类类名 对象名 = new 子类类名();
2.实现关系:父接口名 对象名 = new 实现类类名();

二、多态情况下成员的特点

多态情况下成员的特点:
1.构造器;
2.实例变量;
3.实例方法;

多态成员的特点1:构造器
和原来new子类对象执行情况一样:
1.构造器的名字和类名必须相同;
2.构造器没有返回值类型而且连void关键字都不能有;
3.当一个类没有任何构造器时,JVM自动给其提供一个默认无参的构造器,以便进行初始化; 一旦这个类含有任何的构造器时,JVM不在为其提供;
4.构造器支持重载;
多态成员的特点2:实例变量
和以前打印变量的规则一样:打印变量的时候,和=右侧没有在何关系,和=左边变量的数据类型有关系;
多态成员特点3:实例方法
结论:当使用多态形式创建对象时,通过对象调用方法先看父类(父接口)中是否含有这个方法,如果有,执行子类重写后的方法;如果没有,编译报错。

三、多态的好处与弊端

多态的好处:直接将方法参数写成父类类型或者父接口的类型,当调用方法时,直接传递给其子类类型或者实现类类型即可。

多态的弊端:不可以调用子类特有的功能方法。




四、引用数据类型的类型转换

引用数据类型的类型转换:
1.自动类型转换(向上转型):将子类类型(实现类类型)转换成父类类型(父接口类型),其实就是多态。
2.强制类型转换(向下转型):将父类类型(父接口类型)转换成子类类型(实现类类型)。
  强制类型转换的格式:
       子类类型或者实现类类型 对象名 =(子类类型或者实现类类型)父类类型或父接口类型的对象;

注:CLassCastException:类型转换异常



五、instanceof关键字

instanceof关键字的格式:对象名 instanceof 类名
instanceof关键字的含义:判断该对象在内存中是否为指定的类型:如果是,返回true;如果不是,返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值