JAVA接口
接口(关键词: interface) ,在软件开发过程中起到规范标准的作用,所有使用接口的类必须实现其所使用接口内定义的所有方法。接口内定义的方法只能是抽象方法,抽象方法没有主体,不能再接口中实现,只能被声明。
说得很抽象?没关系,我们来看一下通俗点的解释。
- 有如下情景,在一次会议上教育部门发布了一个任务,要求各高校尽快落实考风考纪的整改
现在把领导交代的任务看作是一个接口
public interface Task{ //领导留下的任务
public abstract void wrok(); //整改工作
}
接口是Task 是领导留下的任务 , 里面要求做的一样工作是wok();
领导不会自己去完成该任务,只会告诉你,你的目标是什么,怎么实现需要看个人喜好。
领导的任务可以被不同的相关对象接受,譬如老师 学校 学生,实际上犯罪分子也可以接受这个任务,但不具有实际意义。
class Teacher implements Task{ //--老师接受任务
public void wrok(){ //--接受任务后必须实现的方法
/*老师方法的实现,譬如开班会*/
}
}
class Student implements Task{ //--学生接受了任务
public void wrok(){
/*学生方法的实现 ,还是暗地里作弊*/
}
}
简单地说
接口可以看成是一个任务,该任务有它自己的一个标准,所有接受该任务的对象必须完成该任务所要求的所有方法,怎么实现由任务的接受者来决定。
接口的特点:
1. 接口是一系列方法的声明。
ps:一系列方法(要求实现)的集合可以看作是一个任务。
2.接口的方法只有声明,全是抽象方法,没有具体实现
ps:任务只说明目的,具体怎么实现只能是使用接口的类来决定
3.接口可以在不同地方被不同类实现,实现有不同行为
ps: 每个对象完成任务的方法都不同
4.接口不能被继承,只能被实现,接口没有构造器。
ps: 接口不能被实例化,所以没有构造器。
6.一个类只能继承一个类,但可以实现多个接口
ps:爸爸只能有一个,但是可以有无数个任务
5.接口可以继承其它接口,类似于类的继承
实际应用:
接口 interface Runable 与抽象类 class Thread与之间的关系,与Runable的使用,如何用实现Runable接口来创建新线程。
//接口Runable
interface Runable{
public abstract void run();
}
/*线程类Thread实现Runable接口,
*必须有run方法,
*run里面的是该线程要做的事
*而创建线程是Thread要干的事,与Runable无关*/
public class Thread implements Runable{
//.........省略
public Thread(Runnable target) { //构造方法
init(null, target, "Thread-" + nextThreadNum(), 0);
}
//.......省略
public void run() {
if (target != null) {
target.run();
}
}
Runable 的使用方法是,让一个类实现Runable接口,然后用这个对象作为参数传递给Thread ,由Thread来创建线程并调用传入的对象target的run方法 。
其实Runable给你的任务就是让你告诉Thread,你要新建一个线程来执行什么命令。命令你写在run里面,其余事情就交给Thread吧。
声明:
本文只能作为参考,不同人有不同的理解,其中文字是JAVA接口概念和个人思维的翻译产物,与现实肯定会存在差距。不求能让大家完全弄懂,只求能稍微帮助到大家理解。
本文有任何不足和错误欢迎指正。