欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java中的接口

时间:2023-07-01
基本介绍

接口就是给出一次额没有实现的方法,封装到一起,到某个类要使用的时候,根据具体的情况把这些方法写出来。

语法:interface 接口名{

属性+方法

}

class 类名 implements 接口{

自己的属性//方法

}

注意:在jdk7以前都没有接口中的方法都没有方法体,而在8.0之后可以有静态方法,默认方法(需要用default进行标记),也就是说接口中有方法的具体实现,在接口中抽象方法可以进行省略。

public interface InterfaxeTest { public int a=10; public int sum(); default public void hi(){ System.out.println("你好"); } public static void ok(){ System.out.println("OK"); }}

接口的简单用法

规范我们的书写,方便调用。比如,我们现需要写出三个类,分别链接mysql数据库,oracle数据库。我们程序员1写的链接mysql数据库链接方法定义为f1,断开为f2。而程序员2写的链接oracle数据库的方法为connect,与close方法。这样会导致我们使用不同的数据库时,调用函数的麻烦,但是当我我们使用接口,就可以规范每一个的命名,举个简单例子:

public interface DBInterface { public void connect(); public void stop();}

public class Oracle implements DBInterface{ @Override public void connect() { System.out.println("链接oracle数据库"); } @Override public void stop() { System.out.println("断开链接oracle数据库"); }}

public class MySql implements DBInterface{ @Override public void connect() { System.out.println("链接mysql数据库"); } @Override public void stop() { System.out.println("断开链接mysql数据库"); }}

public class Test { public static void main(String[] args) { MySql mySql = new MySql(); mySql.connect(); mySql.stop(); }}

接口的注意事项

接口本身并不能被实例化接口中所有方法都为public方法,接口中的抽象方法,可以不用abstract修饰一个类继承该接口,就必须实现接口的所有方法一个类可以实现多个接口

public class Oracle implements DBInterface,InterfaxeTest{ @Override public void connect() { System.out.println("链接oracle数据库"); } @Override public void stop() { System.out.println("断开链接oracle数据库"); } @Override public int sum() { return 0; } @Override public void hi() { InterfaxeTest.super.hi(); }}

接口中的属性只能是final,而且是public static final修饰符,比如int  a=1;实际上为public static int a=1;

证明:

我们在刚才的接口中定义int a=0;

在main方法中输出如下;如果不报错并且可以正常输出,说明这个为public并且为static,我们并没有创建实例化对象。而final只需要我们尝试改变以下值即可。

public class Test { public static void main(String[] args) { System.out.println(MySql.a); }}

做个练习:

public class Test { public static void main(String[] args) { System.out.println(DBInterface.a); System.out.println(MySql.a); MySql mySql=new MySql(); System.out.println(mySql.a); }}

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。