多态概述
事物的多种表现形态就是多态;
java中的多态就理解为对象的不同数据类型的体现也就是子类对象充当父类类型对象
多态的发生前提:
必须要有继承或实现关系
有方法的重写
父类引用指向子类的对象
多态中成员变量的访问原则
编译看左边,运行看左边
按照我们多态访问成员变量的方式,只会查找父类有没有当前正在调用的成员变量
父类有,编译就不会报错,父类没有就会编译报错
多态访问成员变量 , 编译看左,运行也看左
多态中成员方法的访问特点
编译看左,运行看右
多态 调用成员方法时候 编译看左,运行看右
编译看左, 还是看父类中有没有这个成员方法,有编译成功,没有编译报错
运行看右: 运行看的是子类重写的父类的方法
引用数据类型的向上向下转型
向上转型
多态中,使用父类的引用指向子类的对象(向上转型)
本质:缩小了对象本身的访问范围,减少了访问的权限(只能访问父类中定义的内容)
向下转型
概念:
让指向子类对象的父类引用,【恢复】成子类的引用
格式:
子类类型 引用名称 = (子类类型)父类类型的引用;
本质:
【恢复】子类类型原本就有的访问范围
多态的应用
提高了代码的可扩展性(灵活性)
在方法的参数列表中,形式参数是父类类型的引用,将来调用方法的时候,父类类型的任意子类对象,都可以作为方法的实际参数。
包和访问权限
import语句
使用import语句应该注意的几点:
import语句定义在package语句后
java.lang包是默认被导入的,该包下所有类都可以直接使用。
包的导入不是迭代的,也就是当使用com.offcn.*时只会导入该包下的所有类,如果该包下有文件夹a,则a下的所有类不会被导入。
同一个包下的类,不需要导入。
访问权限
private(私有的)
default(默认的) 注意:并不是使用default关键字,而是省略访问控制符。
protected(受保护的)
public(公共的)