Java--接口
在 Java 中,可以通过两种形式来达到抽象的目的,一种是抽象类,另外一种就是接口。
《《《《一个类只能继承一个抽象类,但却可以实现多个接口。》》》》》
接口是通过 interface 关键字定义的,它可以包含一些常量和方法。
public interface Electronic {
// 常量
String LED = "LED";
// 抽象方法
int getElectricityUse();
// 静态方法
static boolean isEnergyEfficient(String electtronicType) {
return electtronicType.equals(LED);
}
// 默认方法
default void printDescription() {
System.out.println("电子");
}
}
1)接口中定义的变量会在编译的时候自动加上 public static final
修饰符,也就是说 LED 变量其实是一个常量。【换句话说,接口可以用来作为常量类使用,还能省略掉 public static final
】
2)没有使用 private
、default
或者 static
关键字修饰的方法是隐式抽象的,在编译的时候会自动加上 public abstract
修饰符。也就是说 getElectricityUse()
其实是一个抽象方法,没有方法体——这是定义接口的本意。
3)静态方法无法由(实现了该接口的)类的对象调用,它只能通过接口的名字来调用,比如说 Electronic.isEnergyEfficient("LED")
。
02、定义接口的注意事项
-
接口中允许定义变量
-
接口中允许定义抽象方法
-
接口中允许定义静态方法(Java 8 之后)
-
接口中允许定义默认方法(Java 8 之后)
1)接口不允许直接实例化。
2)接口可以是空的,既不定义变量,也不定义方法。
3)不要在定义接口的时候使用 final 关键字,否则会报编译错误,因为接口就是为了让子类实现的,而 final 阻止了这种行为。
4)接口的抽象方法不能是 private、protected 或者 final。
5)接口的变量是隐式 public static final
,所以其值无法改变。
03、接口可以做什么
1)使某些实现类具有我们想要的功能
2)Java 原则上只支持单一继承,但通过接口可以实现多重继承的目的。
3)实现多态。===【就是同一个事件发生在不同的对象上会产生不同的结果,】
多态的存在 3 个前提:
1、要有继承关系,Circle 和 Square 都实现了 Shape 接口
2、子类要重写父类的方法,Circle 和 Square 都重写了 name()
方法
3、父类引用指向子类对象,circleShape 和 squareShape 的类型都为 Shape,但前者指向的是 Circle 对象,后者指向的是 Square 对象。
04、接口与抽象类的区别
1)语法层面上
-
接口中不能有 public 和 protected 修饰的方法,抽象类中可以有。
-
接口中的变量只能是隐式的常量,抽象类中可以有任意类型的变量。
-
一个类只能继承一个抽象类,但却可以实现多个接口。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战