Java日志第19天 2020.7.24
接口中的注意事项
1.接口中不能有静态代码块和构造方法
2.一个类的直接父类是唯一的,但可以实现多个接口
3.实现类实现的多个接口中有重复的方法,只需要覆盖重写一次即可。
4.如果实现类没有实现该类所有接口的所有方法,则该类是抽象类。
5.如果实现类实现的多个接口中存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写
6.一个类如果直接父类中的方法和接口中的默认方法产生冲突,优先使用父类中的方法。
接口与接口之间是多继承的
public interface MyInterfaceA { public abstract void methodAbs(); public default void methodDefault(){ System.out.println("重复默认方法"); } }
public interface MyInterfaceB { public abstract void methodAbs(); public default void methodDefault(){ System.out.println("重复默认方法"); } }
public interface MyInterface extends MyInterfaceA, MyInterfaceB{ @Override void methodAbs(); @Override default void methodDefault() { System.out.println("覆盖重写重复默认方法"); } }
父接口中默认方法重复,子接口必须进行方法覆盖重写。
多态性
extends和implements是多态性的前提
代码中多态性的体现,其实就是父类引用指向子类对象
格式:父类名称 对象名 = new 子类名称();
或者 接口名称 对象名 = new 实现类名称();
访问方法:new的是谁就调用谁,没有则向上找
访问变量:等号左边是谁就调用谁,没有则向上找
对象的向上转型
其实就是多态的写法
格式: 父类名称 对象名 = new 子类名称()
含义 预测创建一个子类对象,当做父类使用
注意事项 向上转型一定要是安全的
public abstract class Animal { public abstract void eat(); } public class Cat extends Animal { public void eat(){ System.out.println("猫吃鱼"); } } public class Test { public static void main(String[] args) { //向上转型 Animal animal = new Cat(); animal.eat(); } }
结果如下
对象的向上转型
向上转型后的对象不能调用子类特有的方法,如果想要调用这些方法,就需要对象的向下转型。对象的向下转型就是一个还原的动作。
格式:子类名称 对象名 = (子类名称)父类对象
含义 将父类对象还原为本来的子类对象
public class Cat extends Animal { public void eat(){ System.out.println("猫吃鱼"); } public void catchMouse(){ System.out.println("猫抓老鼠"); } }
public class Test { public static void main(String[] args) { //向上转型 Animal animal = new Cat(); animal.eat(); // animal.catchMouse();//报错!不能这样调用 //进行向下转型 Cat cat = (Cat) animal; cat.catchMouse(); } }
instanceof关键字
对象名 instanceof 类名称
返回的是布尔值,判断对象能否当做类的实例
public class Test { public static void main(String[] args) { //向上转型 Animal animal = new Cat(); animal.eat(); // animal.catchMouse();//报错!不能这样调用 //进行向下转型 //判断能否向下转型后再进行 if(animal instanceof Cat){ Cat cat = (Cat) animal; cat.catchMouse(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南