抽象方法与接口
抽象方法:
1没有方法体的方法,用abstract修饰
2具有抽象方法的类必须是抽象类,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
3抽象类中可以有抽象方法也可以没有,可以有普通方法。
4抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
接口(解决多继承问题):
1默认:抽象方法、静态常量 (常量名大写 可以直接由类名 . 出来)
2实现类实现接口必须重写接口中的所有抽象方法 除非实现接口的类(子类)是抽象类
3在java1.8之前接口只能写无方法体的抽象方法,在之后可以使用default修饰写普通方法,也可以使用static修饰写静态方法 接口也可以作为数据类型接受子类对象(多态)
接口不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
接口与类的相似点
1.一个接口可以有多个方法
2.接口文件保存在.java结尾的文件中,文件名使用接口名
3.接口的字节码文件保存在.class结尾的文件中
4.接口相应的字节码文件必须在与包名相匹配的目录结构中
接口与类的区别
1.接口不能用于实例化对象
2.接口没有构造方法
3.接口中所有的方法都必须是抽象方法,在java8之后 接口中可以使用default关键字修饰的非抽象方法。
4.接口不能包含成员变量,除了static和final变量
5.接口不是被类继承了,而是要被类实现
6.接口支持多实现(多继承)
接口特征
1.接口中每一个方法都是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是public abstract 其他修饰符会报错) (JDK1.9之后,允许将方法定义为private,是的某些复用的代码不会把方法暴露出去)
2.接口中可以有变量,但是接口中的变量会被隐式的制定为public static final变量(并且只能是public,用private修饰会报编译错误)
3.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别
1.抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行(JDK1.8之前)
2.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的
3.接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法的。
4.一个类只能继承一个抽象类,而一个类却可以实现多个接口,接口可以继承另一个接口,也可以实现多继承
标记接口
最常用的继承接口是没有包含任何方法的接口。
标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。
标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。
没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:
- 建立一个公共的父接口:
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。
- 向一个类添加数据类型:
这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!