接口和类有啥区别:

博客主要介绍了Java中接口和类的区别。接口是抽象方法集合,无成员变量(除静态常量)、无构造方法,不能实例化,且不能有普通方法;类是抽象数据类型。一个类只能继承一个类,但可实现多个接口,二者分别用Class和interface修饰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口和类有啥区别:

  1. 接口是一系列抽象方法的集合,接口中只有抽象方法,只有的意思就是,没有成员变量(除了静态常量),没有构造方法,因此不能被实例化。类只是一种抽象的数据类型。
  2. 接口没有构造方法。
  3. 一个类只能继承一个类,但是可以实现多个接口。
  4. 接口中不能有普通方法。
  5. 接口中没有成员变量(除了静态常量)。
  6. 一个用Class修饰,一个用interface修饰
### Java接口与抽象区别及用法比较 #### 抽象的特点 抽象是一种不能被实例化的特殊,允许包含未实现的方法(即抽象方法),也可以拥有已实现的方法。当一个含有至少一个抽象方法时,则该也必须声明为抽象的。子通过 `extends` 继承自抽象,并可以选择性地重写其中的部分或全部抽象方法[^1]。 ```java abstract class Animal { abstract void makeSound(); void eat() { System.out.println("Eating..."); } } ``` #### 接口的特点 接口是一组行为规范的集合,由常量抽象方法构成,在早期版本中仅能定义静态不可变字段以及公共抽象成员函数签名;但从Java 8 开始支持默认方法(default method) 静态方法(static method),这使得接口能够提供一些基础功能而无需依赖于具体实现。任何实现了此接口都需遵循这些规定并给出相应的行为实现,通常采用 `implements` 来表示这种关系[^4]。 ```java interface Flyable { default void fly() { System.out.println("Flying..."); } static void takeOff() { System.out.println("Taking off..."); } } ``` #### 主要差异对比 | 特征 | 抽象 | 接口 | | --- | ------ | ---- | | 实现方式 | 使用 `extends` 进行单继承 | 使用 `implements` 支持多重实现 | | 方法属性 | 可以有构造器、普通方法、抽象方法 | 默认只有抽象方法 (Java 8 前),之后可含默认/静态方法| | 成员变量 | 支持各种访问修饰符的域 | 所有的字段都是隐式的 `public`, `static`, `final` | #### 设计考量 选择使用哪种机制取决于特定场景下的需求分析: - 如果希望创建一组具有共同基底的对象家族,那么应该考虑利用抽象作为模板; - 当目标在于描述多种不同型实体间共通的操作契约而不关心内部结构时,优先选用接口更为合适[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值