zoukankan      html  css  js  c++  java
  • java中接口的定义和接口的实现

    1.接口的定义

    使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

    [修饰符] interface 接口名 [extends 父接口名列表]{

    [public] [static] [final] 常量;
    [public] [abstract] 方法;
    }
    修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
    接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
    extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。
    方法:接口中的方法只有定义而没有被实现。

    例如,定义一个用于计算的接口,在该接口中定义了一个常量PI和两个方法,具体代码如下:

    1 public interface CalInterface   
    2 {  
    3     final float PI=3.14159f;//定义用于表示圆周率的常量PI  
    4     float getArea(float r);//定义一个用于计算面积的方法getArea()  
    5     float getCircumference(float r);//定义一个用于计算周长的方法getCircumference()  
    6 }

    注意: 与Java的类文件一样,接口文件的文件名必须与接口名相同。

    2.接口的实现

    接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下:

    [修饰符] class <类名> [extends 父类名] [implements 接口列表]{ }

    修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。

    类名:必选参数,用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。

    extends 父类名:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数。

    implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。

        在类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。例如,编写一个名称为Cire的类,该类实现5.7.1节中定义的接口Calculate,具体代码如下:

    1 public class Cire implements CalInterface  
    2 { 
    3     public float getArea(float r)  
    4     { 
    5         float area=PI*r*r;//计算圆面积并赋值给变量area 
    6         return area;//返回计算后的圆面积 
    7     } 
    8     public float getCircumference(float r)  
    9     { 
    10         float circumference=2*PI*r;      //计算圆周长并赋值给变量circumference 
    11         return circumference;           //返回计算后的圆周长 
    12     } 
    13     public static void main(String[] args)  
    14     { 
    15         Cire c = new Cire(); 
    16         float f = c.getArea(2.0f); 
    17         System.out.println(Float.toString(f)); 
    18     } 
    19 }

    在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔。这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可以通过“接口名.常量”实现。如果出现方法冲突时,则只要实现一个方法就可以了。

    3、接口的特点

    1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)

    2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化

    3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法

    4、接口中没有构造方法,不能被实例化

    5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口

    6、Java接口必须通过类来实现它的抽象方法

    7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类

    8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例

    9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.

  • 相关阅读:
    设计模式学习总结系列应用实例
    【研究课题】高校特殊学生的发现及培养机制研究
    Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
    python pro practice
    openstack python sdk list tenants get token get servers
    openstack api
    python
    git for windows
    openstack api users list get token get servers
    linux 流量监控
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/7202324.html
Copyright © 2011-2022 走看看