Java中的接口

本文详细介绍了Java编程语言中的接口概念,包括接口的基本定义、使用方法、与抽象类的区别及实际应用场景等核心内容。

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

一、基本概念

接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象方法和全局常量组成,那么这种情况下不会将其定义为一个抽象类。只会定义为一个接口,所以接口严格的来讲属于一个特殊的类,而这个类里面只有抽象方法和全局常量,就连构造方法也没有。

实例:

interface Iwalk {

   //此时的应为public static String name;

   //此时的他为全局变量

   String NAME = "小白";

   /*

    * 在接口中没有方法体,不能创建对象

    * 更没有构造方法

    */

   void dowork(); 

   //它的原型其实是public static abstract void dowork();

}

二、接口的使用

1、由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:

(1)接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口; (2)接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法;

 

(3)接口的对象可以利用子类对象的向上转型进行实例化。

代码:

      interface Iwalk {

   void dowalk();  }

interface Iswim {

   void DoSwim();

}

public class DoubleWork implements Iwalk,Iswim{

   //类实现与接口的对接必须用实现关系

   //并且必须覆盖

   public void dowalk() {

      System.out.println("我会走");

   }

   public void DoSwim() {

      System.out.println("我会游");

   }

}

public class Test {

   public static void main(String[] args) {

      DoubleWork x = new DoubleWork();

      x.DoSwim();

      x.dowalk();

   }

}

代码答案:我会游  我会走

2、对于子类而言,除了实现接口外,还可以继承抽象类。若既要继承抽象类,同时还要实现接口的话,使用一下语法格式:

class 子类 [extends 父类] [implemetns 接口1,接口2,...] {}

public interface A {

   /*

    * 此时的doA的访问权限应该时publicabstract...

    */

   void doA();

}

public interface B {

   void doB();

}

public abstract class C {

   public void doC();

}

public class D extends C implements A,B {

   /*

    * 因为接口类中的权限是公共的。所以在继承她的方法时

    * 必须也使用公共的

    */

   public void doA() {

      System.out.println("我是接口A");

   }

   public void doB() {

      System.out.println("我是接口B");

   }

   public void doC() {

      System.out.println("我是抽象类C");

   }

}

public class TestTwo {

 

   public static void main(String[] args) {

      D d = new D();

      d.doA();

      d.doB();

      d.doC();

   }

}

代码:我是接口 我是接口B 我是抽象类C

3、在Java中,一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)。

interface A{

   public void funA();

}

interface B{

   public void funB();

}

//C接口同时继承了A和B两个接口

interface C extends A,B{//使用的是extends

   public void funC();

}

class X implements C{

   @Override

   public void funA() {

    }

   @Override

   public void funB() {

    }

   @Override

   public void funC() {

    }

}

由此可见,从继承关系来说接口的限制比抽象类少:

(1)一个抽象类只能继承一个抽象父类,而接口可以继承多个接口;

(2)一个子类只能继承一个抽象类,却可以实现多个接口(在Java中,接口的主要功能是解决单继承局限问题)

4:从接口的概念上来讲,接口只能由抽象方法和全局常量组成,但是内部结构是不受概念限制的,正如抽象类中可以定义抽象内部类一样,在接口中也可以定义普通内部类、抽象内部类和内部接口(但从实际的开发来讲,用户自己去定义内部抽象类或内部接口的时候是比较少见的),

public interface A {

    public void funA();

       abstract class B{//定义一个抽象内部类

           public abstract void funB();

}

}

三、接口的实际应用(标准定义)

在日常的生活之中,接口这一名词经常听到的,例如:USB接口、打印接口、充电接口等等。 

如果要进行开发,要先开发出USB接口标准,然后设备厂商才可以设计出USB设备。

现在假设每一个USB设备只有两个功能:安装驱动程序、工作。 
定义一个USB的标准:

 

public interface USB {

   /*

    * 定义类的接口使其它的类规范

    */

   void install();

   void doWork();

}

public class Iphone implements USB{

   public void install() {

      System.out.println("手机驱动正在安装.......");

   }

   public void doWork() {

      System.out.println("手机已经成功安装。");

   }

}

public class Print implements USB {

   public void install() {

      System.out.println("打印机驱动正在安装.......");

   }

   public void doWork() {

      System.out.println("打印机已经成功安装。");

   }

}

 

 

public class Computer {

   public void plugin(USB usb) {

      usb.install();

      usb.doWork();

   }

}

public class TestD {

   public static void main(String[] args) {

      Computer cpt = new Computer();

      cpt.plugin(new Iphone());

      cpt.plugin(new Print());

   }

}

答案:、

手机驱动正在安装.......

手机已经成功安装。

打印机驱动正在安装.......                打印机已经成功安装。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值