java--Day3-多态and包
多态
同类型的对象,表现出的不同形态
多态的表现形式:父类类型 对象名称=子类对象
多态的前提:有继承(extends)/实现(implements)关系
有父类引用指向子类对象(例如:Fu f=new Zi();)有方法重写
多态的好处:使用父类作为参数,可以接收所有子类对象,体现多态的扩展性与便利
多态调用成员的特点: 调用--成员变量时:编译看左边👈,运行也看左边👈 调用--成员方法时:编译看左边👈,运行看右边👉多态的弊端:不能调用子类的特有功能
解决方案:强制类型转换–变回子类类型就可以了,例如:Dog d=(Dog)a;
if转换类型与真实对象类型不一致会报错
JDK14新特性 先判断a是否为Dog类型,如果是,则强制转换成Dog型,转换之后变量名为d if不是,则不强制转换,结果直接是false 示例: if(a instanceof Dog d){ d.lookHome(); } else if(a instanceof Cat c){ c.catchMouse(); } else{ System.out.println("没有这个类型,无法转换"); }转换的时候用instanceof关键字进行判断
包–就是文件夹📂(用来管理各种不同功能的Java类)
需要全部英文小写,见名之意
使用其他类的规则: 使用同一个包中的类时,不需要导包 使用java.lang包中的类时,不需要导包 其他情况都需要导包 如果同时使用两个包中的同名类,需要用全类名(即:包名+类名)