`
闫老三
  • 浏览: 103234 次
社区版块
存档分类
最新评论

Java中的Interface(接口)

    博客分类:
  • Java
 
阅读更多

相对abstract class(抽象类)来讲,interface则造出了“完全抽象的class”,丝毫不带半点实现的内容。且interface中的所有methods都是虚的空的,当然,编译器也强迫你这样做。看下面事例:

      
 interface A{
              void x();//这里不需写访问权限,x()就自动成为了public void x()
              String Hello();
}
 
interface中的方法无需声明,都会自动设为了public。
当然,interface中的数据成员也变为了public,static,final。
看例子:
class B implements A{
       String str="Hello";//这里的str很自然的变成了public static final int str;
       public void x(){
       //……//
       }
       public String Hello(){
              return str;
       }
}
 
要注意,当某个类(like class B)实现了一个接口时,一定要把它实现的methods(函数)标明为public,否则编译器不会让你好过。
 
以上只是interface的普通用法罢了,更让人兴奋的是:它可以让你实现原本以为java中没有的“多重继承”。即,你可以是个A,也可以是个B和C。看下面:
class father{}
interface Human{}
interface Boy{}
 
 
class Me extends father implements Human,Boy{}
 
呵呵,你们看到了,如语义,爸爸正继承(extends)一个,但我的身份却可以是“人类(human)”或者“男孩(boy)”。同样,java中,只能继承一个一般的Class(non-interface即非接口类),但你却可以继承多个interface,也可以说“interface让你拥有多个身份”。这当然更利于多态的应用咯。
还有,interface也是可以继承其它类的,但,只能是继承另一个接口。如以下:
 
class A{}
abstract class B{}
interface C{}
 
//!interface D extends A{}
//!interface D extends B{}
interface D extends C{}//看到吧,接口只能继承接口,继承其它的话,编译器回生气哟
 
然后呢,咱们再看一个比上面复杂一点的例子,说明了你不能胡乱的把两个接口同时实现:
interface A{void a();}
interface B{void b();}
 
class Xa{
       public void a(){}
}
class Xb{
       public int b(){return 53;}
}
 
class Hero extends Xa implements A,B{
       public void b(){}
//大家注意,为什么这儿实现了 A和B 两个interface却只实现了b()一个接口呢?后面分解
}
 
//!class ErrTest extends Xb implements B{}//这为什么报告错误呢?后面分解
 
public class Test {
       static void mA(A a){//这儿之所以可以用a来调用是因为,下面会进行向上转型,
                                   //A的derived class reference传到这里,当然可以使用,下同。
              a.a();
       }
       static void mB(B b){
              b.b();
       }
       
       public static void main(String[] args) {
              Hero h=new Hero();
              
              mA(h);//向上转型,因为上面接参的是Hero的base class
              mB(h);
       }
}///:~
 
好了,例子看完了,下面来解释上面的几个现象:
NO1.class Hero为什么实现了 A和B 两个interface却只实现了b()一个接口呢?因为它还同时继承了一个Xa类,而Xa中恰好又一个一模一样的void a(),所以,在继承的同时,“爸爸替儿子”自动的实现了a(),不用“儿子”亲自动手。
但是注意,必须要是完全相同才行!即需要同参数列表、同返回值),否则就会?看下面:
NO2. ErrTest不能再写下去是因为,它所继承的B类的void a()与它所实现的Xb接口中的int a()产生冲突两者名称相同,但是返回值不一样,导致编译器不知道该使用哪一个或者应该重写等,所以会报出错误。这就是冲突。
所以,须提醒的是:尽量不要结合含同名参数的interface等,或者就干脆不要写同名的函数。
 
Interface还有一重要功能,平常不为人所用的:产生常量群!!由于interface中的数据成员会自动成为public static final,所以……如下:
public interface Months{
              int 
JANURAUY=1,//再次说明,常量都要全部用大写,语义间用下划线分开如: VAL_XX
                     FEBRUARY=2,
                     MARCH=3;
}
 
       然后要用的话,就直接Months. JANURAUY*10类似的直接用就行了!完全OK!!超级好用!!
提醒:interface的常量群众的数据成员,因为是static静态的,所以当你首次使用这个常量群时,就会自动初始化里面的数据,不管你使用多少次它的数值都不会再变了。如下:
public interface Vals{
       int VAL_A=(int)(Math.random()*10);
}
 
我们看到,VAL_A是由随机数得值的,但当你第一次使用它时,VAL_A被赋予了一个随机数3.14,但以后不管你用多少次,都只是同一个数3.14。
 
然后呢,interface可以互相嵌套,既可以嵌在class中,也可以嵌在另一个interface中。
Interface的嵌套可以发展出很多有趣的性质来,但是内容过多,一时间无法全部写下,so就此写一小点吧,需要用时再做深究。
当某一个interface嵌套到了另一个interface中时,则它一定会变成public,无法标记为private”。
当你实现某个interface时,根本无须实现嵌套在它里面的Other interfaces
此外,“private interface是无法在它所定义的class之外被发现的”。
 
好了,Interface(接口)就想到这里了。
分享到:
评论

相关推荐

    Java中interface接口与abstractclas

    这意味着任何实现接口的类必须提供所有接口中定义的方法的实现。接口使用`interface`关键字定义,并使用分号`;`结束方法声明。接口可以实现多继承,一个接口可以继承多个其他接口,这使得接口能够聚合多种行为。此外...

    Java中interface接口的作用

    当用户触发某个事件时,会调用监听器接口中定义的方法。这种方式提高了代码的可读性和可复用性。 此外,Java标准库中的`java.util.Comparator`和`java.lang.Comparable`接口是两个常见的示例。`Comparator`用于比较...

    Java中的interface接口

    自Java 8起,接口引入了默认方法(default methods),它们有方法体且可以在接口中定义。默认方法允许在不破坏已有实现类的情况下扩展接口。同时,接口还可以包含静态方法,它们不属于接口的任何实现类,而是通过...

    详解java接口interface

    Java 接口中的抽象方法是没有实现的方法,需要由实现类来实现。抽象方法的定义格式如下: ```java public abstract 返回类型 方法名(); ``` 其中,`public` 和 `abstract` 关键字可以省略。抽象方法的使用需要实现...

    JNI(Java Native Interface)中文手册

    JNI(Java Native Interface)是Sun Microsystems公司定义的一套标准接口,用于实现Java代码与本地代码(通常是C或C++)之间的交互。随着Java的发展,JNI的重要性日益凸显,因为它允许Java程序调用本地库的功能,...

    Java Native Interface Specification

    Java本地接口(Java Native Interface, JNI)是一种框架,允许Java代码调用本地应用编程接口(Native Application Programming Interfaces, Native APIs)以及将本地方法嵌入到Java虚拟机(Java Virtual Machine, ...

    Android APP 用interface 接口的形式对jni进行回调,实例测试

    本实例测试主要探讨如何通过Java接口(interface)在Android App中实现对JNI层的回调,以提高应用程序的灵活性和功能性。 首先,我们需要理解Java接口在JNI中的作用。在Android中,Java接口可以作为参数传递给JNI...

    Java Native Interface Programmers Guide and Specification(Exp)

    - **头文件(.h)**:定义了本地方法的函数原型,供Java代码通过JNI头文件生成器生成对应的Java Native Method接口。 - **本地代码文件(.c或.cpp)**:实现了头文件中定义的本地方法,可以是C或C++代码。 - **...

    java 接口 java 接口java 接口

    通过实现接口,一个类承诺将提供接口中所有方法的实现。 二、接口与类的区别 1. 类可以有属性(成员变量)和方法,而接口只能有常量(静态最终变量)和抽象方法。 2. 类可以继承单个类,但可以实现多个接口。这实现...

    C#调用Java接口演示

    private readonly MyJavaInterface javaInterface; public CSharpConsumer(MyJavaInterface interfaceInstance) { this.javaInterface = interfaceInstance; } public void CallJavaMethods() { java...

    Java Native Interface Specification R1.1

    Java Native Interface(JNI)是Java开发中的一个重要概念,它允许Java代码与其他语言编写的代码进行交互,尤其是与C或C++编写的本地应用程序接口(API)进行交互。JNI在Java应用程序中扮演着桥梁的角色,使得Java...

    Java本地接口(JNI)编程指南和规范 Java Native Interface 6.0 Specification

    总之,Java本地接口(JNI)是Java平台中连接Java世界和本地世界的桥梁,它提供了丰富的功能,但也带来了额外的复杂性和潜在风险。理解和熟练使用JNI是高级Java开发者的必备技能之一。通过JNI,Java开发者可以充分...

    java 接口练习作业

    实现接口意味着一个类承诺实现接口中所有的抽象方法。在类声明中,我们使用`implements`关键字来实现接口: ```java public class MyClass implements MyInterface { public void method1() { // 实现方法1 } ...

    Java接口的实现 操作

    接口的实现是指在某个类中,提供了接口中所有方法的实现。Java 的接口可以学习如何实现 Java 的接口,在编写实现程序的时候可以更好地使用。 在 Java 中,接口是使用 interface 关键字来定义的。接口中可以定义变量...

    java 中的接口与继承

    实现接口的类必须提供接口中所有抽象方法的实现。这可以通过关键字`implements`来完成: ```java public class Dog implements Animal { public void eat() { System.out.println("Dog is eating"); } public ...

    Interface接口的定义和用法---马克-to-win Java视频

    Interface接口的定义和用法 马克-to-win Java视频的详细介绍

    Java 接口

    实现接口时,需要在类声明中使用`implements`关键字,并提供接口中所有抽象方法的实现。例如: ```java public class MyClass implements MyInterface { @Override public void myMethod() { // 方法实现 } } ``...

    java中接口的作用

    Java 中接口的作用 Java 中的接口是一种抽象的概念,它定义了一组方法的集合,但不提供实现。接口的主要作用是提供一种规范,以便实现类来实现这些方法。接口的作用主要体现在以下几个方面: 多重继承:Java 中的...

    java开发接口帮助文档

    Java API(Application Programming Interface)是Java语言的核心组成部分,它定义了Java标准类库中各种类和接口的集合。这些类库涵盖了输入输出、网络通信、数据处理、图形用户界面等多个领域,为开发者提供了丰富...

Global site tag (gtag.js) - Google Analytics