接口interface
在软件工程中,接口interface泛指供别人调用的方法或函数,与抽象类不同,接口中所有的方法都是抽象的,只有声明,没有方法体。真正的实现是在继承这个接口的类的方法体里面完成。
接口中的变量会被隐式指定为public static final变量。
方法会被饮食指定为public abstract方法。
接口中的所有方法都不能有具体的实现。即接口中的方法必须是抽象的方法。
一般情况下不在接口中定义变量。
另外,接口还能继承接口,(可以多继承)
接口示例
package interface_study;
public interface Runner
{
int id=1;//==public final static int id =1//默认为静态公共变量
public void start();//==public abstract void start();//默认为抽象类
public void run();
public void stop();
}
接口的实现方法:
public class [name] implements [interface name]{}
例如:
package interface_study;
public class Demo5_4 implements Runner
{
@Override
public void run() {
System.out.println("running");
}
@Override
public void start() {
System.out.println("starting");
}
@Override
public void stop() {
System.out.println("stopped");
}
public static void main(String[] args) {
Demo5_4 a;
System.out.println(id);//静态变量
// id=2;/* fianl 类 *///无法将值赋给 final 变量 'id'//确认是final变量。
//所以说一半不在接口中定义变量。。。定义出来的都是fianl的。
a=new Demo5_4();
a.run();
a.stop();
a.start();
}
}
运行结果:
/Users/Admin/Library/Java/JavaVirtualMachines/openjdk-15.0.2/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=55387:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/Admin/IdeaProjects/study/out/production/study interface_study.Demo5_4
running
stopped
starting
进程已结束,退出代码为 0
接口 | 抽象类 |
---|---|
成员变量为public static final型的 | 成员变量可以是各种类型的 |
成员方法只能是抽象方法 | 成员方法可以是抽象方法也可以是非抽象方法 |
不能有静态代码块和静态方法 | 可以有静态代码块和静态方法 |
一个接口可以继承多个父类接口,一个类可以实现多个接口 | 一个类只能继承一个抽象类,不能使用多继承 |
接口是对行为的抽象,与实现的类之间呈现的是具备与否的关系,不存在层次关系 | 抽象类是对整个类整体进行抽象,包括属性,行为,和派生的子类之间是一种层次关系 |