interface(接口)

本文详细介绍了Java接口的概念,包括其作为方法特征集合的角色,接口的定义方式,以及如何实现接口。同时,文章还探讨了接口与抽象类的区别,如构造方法、成员变量、方法类型等,并通过示例展示了类如何实现多个接口。接口在Java中用于模拟多重继承,提供多态性,并强调了其在类设计中的重要性。

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

interface(接口)

一、Java接口是什么

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口,在Java编程语言中是一个抽象类型,它被用来要求类(Class)必须实现指定的方法,使不同类的对象可以利用相同的界面进行沟通。接口通常以interface来宣告,它仅能包含方法签名以及常数宣告(变量宣告包含了 static 及 final),一个接口不会包含方法的实现(仅有定义)。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须宣告为抽象类。另外,在Java中,接口类型可用来宣告一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

其中一个使用接口的优势是,可以利用他们模拟多重继承,类在JAVA中不允许多重继承,所有在Java中的类必须而且仅能有一个父类,而java.lang.Object是唯一一个例外。

Java的类可以被实现许多个接口,然而一个接口则无法实现其他的接口。

二、接口的定义

interface 来定义。

接口中的所有成员变量都默认是由public static final修饰的。

接口中的所有方法都默认是由public abstract修饰的。

接口没有构造方法,构造方法用于创建对象

实现接口的类中必须提供接口中所有方法的具体实现内容。

多个无关的类可以实现同一个接口

一个类可以实现多个无关的接口

与继承关系类似,接口与实现类之间存在多态性

接口也可以继承另一个接口,使用extends关键字。

实现接口的类中必须提供接口中所有方法的具体实现内容。

多个无关的类可以实现同一个接口

一个类可以实现多个无关的接口

与继承关系类似,接口与实现类之间存在多态性
一个类即存在继承关系又存在实现关系,继承在前,实现在后。
Java中的类是单继承的,Java中的接口是多继承的。
接口格式:interface 接口名{}
实现类格式:class 实现类名 implements 接口名{}
作用:用于定义方法,所以只包含抽象方法。
特点:不可实例化,只有抽象方法、常量。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

三、抽象类与接口的区别

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的可以有非抽象方法,比如default方法

4.抽象类中的抽象方法的访问类型可以是publicprotected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5.抽象类中可以包含静态方法,接口中不能包含静态方法

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7.一个类可以实现多个接口,但只能继承一个抽象类。


示例:

package com.myJava.monster;

//实现了接口的继承,和多继承的例子
public class TestInterface {
    public static void main(String[] args){
        monster monster1 = new monster();
        monster1.live();
        monster1.work();
        monster1.run();
    }
}

interface Person {
    public static final int age =10;
    public abstract void live();
}

interface Man extends Person {
    public static final int length=180;
    public abstract void work();
}

interface Women extends Person {
    public static final int weight = 55;
    public abstract void run();
}

class monster implements Man,Women {
    public String name;
    @Override
    public void live() {
        System.out.println("吃喝拉撒");
    }

    @Override
    public void work() {
        System.out.println("干干干");
    }

    @Override
    public void run() {
        System.out.println("跑步减肥");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值