Java接口

接口

接口就是给出一些没有实现的方法定义,等到某个类要使用时,再具体实现

interface 类名
{

	属性
	方法
};
class 类名 implements 接口名
{
	属性
	方法
	//接口的所有抽象方法都要实现
	接口方法的实现
}

接口中的抽象方法可以不用abstact修饰,jdk7之前接口中的所有方法都是抽象方法,而jdk8之后接口中的方法可以默认实现方法,但要用default修饰,也可以有静态方法

接口存在的意义

在我接口时一直有一个问题,直接在用到方法的类里直接实现方法不香吗?为什么还要定义接口呢?
可能对于现在阶段未工作的我们答案是这样的。
接口的便于维护和管理
比如我们有三个程序员要分别实现数据库Mysql,Orcel,DB2,我们都知道数据库有连接还有关闭功能,所以我们可以定义一个接口,让三个数据库都去实现这个接口,假如我们并不定义接口,a程序员可能实现这两个方法叫A,B,b程序员实现这两个方法又叫C, D这个每个程序员实现同样一种功能的方法,名字却各不相同,我们调用起来就很难搞,而这时候接口的作用就可体现出来了。
接口的作用还有很多,只是初学,我们先知道这玩意时是有用的就可以了。

接口的使用细节

1、接口不能被实例化

因为我们知道接口本身就是一个抽象的东西,关于为什么接口不能被实例化我搜索了一下资料,我们知道java的内存分为栈区、堆区、代码、静态数据这四部分。清楚了这个之后我们先看类的实例化是一个怎样的过程,如下图,首先我们先在栈区声明了一个per,然后JVM对per进行实例化,在堆区为其开辟一段空间,用来存储这个Person对象,那么堆内存里面具体存的是那些东西呢,其实堆内存里存储的是对象的属性,我们清楚这些之后就可以对接口进行分析了,接口中的属性是用static final修饰的,而我们看下图,可以知道java中static变量是存在方法区的,不在堆区,所以就没有必要在堆区为其分配内存,而方法也是不在堆区的,所以接口没有被实例化的必要,java就规定其不能被实例化

20150109212141406.jpg
java的内存分配(运行时).png
2、接口中的方法是public的,默认用public abstract修饰我们可以将其省略
3、一个普通类实现接口就必须将该类中的所有方法都实现(Idea中可以使用alt + /快速完成)
4、抽象类实现接口可以不用实现接口中的方法
5、一个类可以实现多个接口

interface I1
{}
interface I2
{}
class C implements I1, I2
{
	//两个接口的方法都要实现
}

6、接口中的所有属性都是public static final
7、接口不能继承其他类,但是可以继承多个接口(这里的继承是和类的继承不相同的,类的继承是单一的,只能继承一个类,这里接口却可以继承多个接口)

偷懒这里就用上面的接口了
interface I3 extends I1, I2
{}

8、接口的修饰符只能是public和默认的(这点和类的修饰是一样的)

接口和继承对比

接口学到这里我们对接口就有了一个大概轮廓的认识,接口是对抽象类的延伸,接口是对行为的抽象,java为了保护数据安全是不允许多继承的,而接口则弥补了这一种缺陷,是对单继承机制的补充。

继承是is_a的关系,而接口时like_a的关系

接口的多态

1、接口可以接收实现了接口的类,接口变量可以接收实现了该接口的对象实例
2、多态传递

如果一个接口IA继承了接口IB,一个类A实现了IA,那么我们可以用IB接口类型的变量来接收类A的实例,这就相当于A也实现了接口B,所以B类型的接口也可以接收A类的实例

package Interface;

public class Interface01 {
    public static void main(String[] args) {
        A a = new A();
        IH Ih = a;
        IG Ig = a;
    }
}
interface IH{}
interface IG extends IH{}
class A implements IG{
}
posted @   cxy8  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示