java基础(五):多态和接口
一. 多态
1.什么是多态
2.如何实现多态
3. instanceof 运算符
二. 接口
一. 多态
1.什么是多态
多态: 同一个引用类型,使用不同的实例而执行不同的操作。父类引用,子类对象。
2.如何实现多态
使用多态实现思路
- 编写父类
- 编写子类,子类重写父类方法
- 运行时,使用父类的类型,子类的对象
Pet pet = new Dog();
使用多态的两种形式
- 使用父类作为方法形参使用多态
- 使用父类作为方法返回值使用多态
注意:父类引用不能调用子类特有的方法。
3. instanceof 运算符
语法
对象 instanceof 类或接口
instanceof通常和强制类型转换结合使用
小结
类型转换
- 向上转型——子类转换为父类,自动进行类型转换
- 向下转型——父类转换为子类,结合instanceof运算符进行强制类型转换
使用多态的好处?
多态可以减少类中代码量,可以提高代码的可扩展性和可维护性
引用变量的两种类型:
- 编译时类型(模糊一点,一般是一个父类) 由声明时的类型决定。
- 运行时类型(运行时,具体是哪个子类就是哪个子类) 由实际对应的对象类型决定。
多态的存在要有3个必要条件:
要有继承,要有方法重写,父类引用指向子类对象
二. 接口
关键字:interface
接口特性:
- 接口不可以被实例化
- 实现类必须实现接口的所有方法
- 实现类可以实现多个接口
- 接口中的变量都是静态常量
示例实现
1.编写接口
public interface UsbInterface { /** * USB接口提供服务。 */ void service(); }
2.实现接口:多个接口使用 “,”分隔
public class UDisk implements UsbInterface { public void service() { System.out.println("连接USB口,开始传输数据。"); } }
3.使用接口:用接口实现多态
UsbInterface uDisk = new UDisk(); uDisk.service();
接口:has - a 的关系
接口是一种约定:体现在接口名称和注释上 - 有些接口只有名称;方法的实现方式要通过注释来约定
面向接口编程:程序设计时,面向接口的约定而不考虑具体实现。
补充:
接口中没有构造函数;
接口中的方法都是抽象方法,没有方法体;
接口中的方法不能是private的;
接口中字段的修饰符:public static final(默认不写)
- public: 使接口的实现类可以使用这个常量
- static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量
-
final:接口中不可以定义变量即定义的变量前都要加上final修饰,使之成为常量(没有final修饰的是变量,加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。
接口中方法的修饰符:public abstract(默认不写)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现