接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。那我们要运行java接口要如何操作呢?下面来我们就来给大家讲解一下JAVA接口运行方法。
以下三个文件存在于同一个包下:
定义接口Dome_Interface.java:
package cn.xxmmqg.Interface;
// 接口不能直接使用,必须有一个“实现类”来实现该接口
// 接口的实现类必须覆盖接口中的所有抽象方法,如果没有全部覆盖重写,则实现类必须是抽象方法
public interface Dome_Interface {
// ==============抽象方法=================
// 任何版本的java都可以定义抽象方法
// 抽象方法的修饰符必须是 public abstract,且可以选择性省略
public abstract void methodAbs1();
public void methodAbs2();
abstract void methodAbs3();
void methodAbs4();
// 以上都是抽象方法
// ==============默认方法=================
// 默认方法通过default修饰,而public 可以省略,但是【不能是其他的】
// 默认方法可以通过【实现类】使用,而不需要被实现类重写
public default void methodDef(){
System.out.println("默认方法运行");
}
// 接口中可以定义默认方法,用于解决接口升级问题
// 将新添加的接口功能定义成默认方法,那么已投入使用的实现类不需要改变也可使用该功能,实现类中也可以对其进行覆盖重写
// ==============静态方法=================
public static void methodSta(){
System.out.println("接口的静态方法");
}
// ==============私有方法=================
// 定义私有方法,用于解决多个【默认方法】代码重复的问题
// 如果私有方法中加上修饰符static,就能解决多个【静态方法】代码重复问题
private void methodPri(){
System.out.println("重复代码运行");
}
public default void methodDef1(){
System.out.print("methodDef1运行 ");
this.methodPri();
}
public default void methodDef2(){
System.out.print("methodDef2运行 ");
this.methodPri();
}
// ==============成员变量=================
// 接口中定义成员变量,但是必须使用 public static final三个关键字进行修饰,且可以选择性省略
// 效果上看,就是接口的常量,以下定义方法中都是【常量】
// 接口中的常量必须进行赋值
public static final int NUM_1 = 10; // 常量一般使用全大写字母加下划线
int NUM_2 = 11;
public int NUM_3 = 12;
static int NUM_4 = 13;
final int NUM_5 = 14;
}
定义接口的实现类Dome_Implement.java:
package cn.xxmmqg.Interface;
public class Dome_Implement implements Dome_Interface{
// 覆盖重写抽象方法
@Override
public void methodAbs1() {
System.out.println("Abs1");
}
@Override
public void methodAbs2() {
System.out.println("Abs2");
}
@Override
public void methodAbs3() {
System.out.println("Abs3");
}
@Override
public void methodAbs4() {
System.out.println("Abs4");
}
}
主函数Dome_Main.java:
package cn.xxmmqg.Interface;
public class Dome_Main {
public static void main(String[] args) {
Dome_Implement impl = new Dome_Implement();
System.out.println("--------------------");
impl.methodAbs1();
impl.methodAbs2();
impl.methodAbs3();
impl.methodAbs4();
System.out.println("--------------------");
// 调用默认方法,如果实现类中没有定义,则向上找接口的
impl.methodDef();
impl.methodDef1();
impl.methodDef2();
System.out.println("--------------------");
// 调用静态方法
// impl.methodSta(); // 不能通过接口实现类的对象来调用接口的静态方法,因为一个类可以实现多个接口,这些接口的静态方法有可能重名
Dome_Interface.methodSta(); // 正确调用接口静态方法的方法
System.out.println("--------------------");
// 访问接口中的常量
System.out.println(Dome_Interface.NUM_1);
System.out.println(Dome_Interface.NUM_3);
}
}
主函数运行结果:
--------------------
Abs1
Abs2
Abs3
Abs4
--------------------
默认方法运行
methodDef1运行 重复代码运行
methodDef2运行 重复代码运行
--------------------
接口的静态方法
--------------------
10
12
如何实现java接口?
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
实现一个接口的语法,可以使用这个公式:
接口语法:
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
实例
MammalInt.java 文件代码:
/* 文件名 : MammalInt.java */ public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
以上实例编译运行结果如下:
Mammal eatsMammal travels
重写接口中声明的方法时,需要注意以下规则:
类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
另外我们在实现接口的时候,也要注意一些规则,比如个类可以同时实现多个接口等,知道了这些,我们才能更好的使用java接口!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。
推荐阅读: