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包中的类时,不需要导包 其他情况都需要导包 如果同时使用两个包中的同名类,需要用全类名(即:包名+类名)