JAVA——接口

                                                     

前言:

接口是一种规范和标准,它是一些方法特征的集合,但无具体的实现细节。接口可以被类或其他接口实现,通过面向接口的编程,可以提高代码的复用率、可维护性、可扩展性。

1.接口概念

在现实生活中,我们都能见到接口,接口是一种公共规范和标准。符合规则则可以使用。

java中,接口可以看成是多个类的公共规范,是引用数据类型。

接口与抽象类有些类似,最核心的区别在于抽象类能包含普通方法和普通字段,且这些成员都能直接被子类使用(不用重写),而接口不能包含普通方法,且子类必须重写所有接口的抽象方法

2.语法规则和使用

关键字:interface(用于定义接口)

关键字:implements(用来实现接口)

接口的定义方式与类的定义方式类似,只需吧class换成interface即可

语法格式:interface 接口名称{

//抽象方法。。。

}

类要想使用接口,则通过implements来实现接口,并且重写接口的所有抽象方法(子类与父类为extends继承关系,类与接口是implements实现关系)

语法格式:class 类名 implements 接口名称{

//重写的抽象方法。。。

}

 接口的实用代码实例:

用笔记本完成使用鼠标,电脑的操作(USB接口)

USB:

KeyBoard:

Mouse:

Computer:

Test(调试测试):

3.接口的特性

(1)接口类型也是一种引用类型,不可以直接实例化对象

(2)接口中每一个方法都被指定隐藏为public abstract(不可修改,不可随意更换修饰符否则报错)

(3)接口中的方法无具体实现,只能由实现接口的类来重写实现

(4)重写接口的方法时,要注意实现类重写的访问权限要大于等于接口的方法的访问权限,已知接口的访问权限为public,则实现类重写方法时访问权限也必须为public

(5)接口中也可以存在成员变量,但是必须为public static final所修饰的,接口中的变量也被隐式的指定为public static final所修饰。

(6)接口不能有静态代码块和构造方法(但可以有静态方法和default修饰的方法)

(7)接口不是类,但是编译完成后的后缀带.class

(8)接口中被static 或 default所修饰的方法可以有具体实现

关键字:default(允许接口中存在有默认方法,用来修饰接口中的方法)

4.实现多个接口

对于继承来说,一个类只能继承一个父类,不支持多继承多个父类。所以有时候实现复杂多样化的代码会很麻烦。但一个类可以实现单个或多个接口,在java中,也经常使用一个类继承一个父类实现多个接口的写法

单个接口:

小明实现了run这个接口的方法

多个接口:

格式:implements 接口1,接口2,接口3...

小明不仅实现了跑步的方法,还实现了游泳的方法

注:一个类实现多个接口时,每个接口的抽象方法都要实现!!!

5.接口间的继承

接口与接口之间也可以继承,甚至可以多继承,利用extends来继承

多继承格式:extends 接口1,接口2,接口3...

如上述图:运动类继承了足球,游泳,跑步等接口,使用起来也会更加的多样化

但是同时也是要实现所有继承过来的抽象方法,结果是:

                       

  • 58
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Java中的Handler机制是Android开发中非常重要的一个概念,它是用来处理线程之间的通信的。在Java中,也可以使用Handler机制来实现线程之间的通信,这里简要介绍一下Java中的Handler机制。 Java中的Handler机制是基于线程池的,它可以将任务提交到线程池中执行,并且可以将执行结果返回给调用者。在Java中,可以使用Executor框架来实现线程池,同时可以使用Future接口来获取执行结果。 在Java中,Handler机制可以通过以下几个步骤来实现: 1. 创建一个线程池,可以使用Executor框架来实现。 2. 创建一个Callable接口的实现类,该实现类用来执行任务并返回结果。 3. 将Callable实现类提交到线程池中执行,可以使用submit()方法来实现。 4. 获取执行结果,可以使用Future接口来获取。 下面是一个简单的示例代码: ```java import java.util.concurrent.*; public class HandleJava { public static void main(String[] args) throws Exception { // 创建线程池 ExecutorService executor = Executors.newFixedThreadPool(1); // 创建Callable实现类 Callable<String> callable = new Callable<String>() { @Override public String call() throws Exception { // 执行任务 Thread.sleep(1000); return "Hello, world!"; } }; // 提交任务到线程池 Future<String> future = executor.submit(callable); // 获取执行结果 String result = future.get(); System.out.println(result); // 关闭线程池 executor.shutdown(); } } ``` 这个示例代码中,创建了一个线程池,然后创建了一个Callable实现类,将其提交到线程池中执行,并且使用Future接口来获取执行结果。最后关闭线程池。 需要注意的是,线程池一定要关闭,否则程序会一直运行下去,不会退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值