zoukankan      html  css  js  c++  java
  • JAVA定义接口格式:

    [public]interface 接口名称 [extends父接口名列表]

    {

    //静态常量

    [public] [static] [final] 数据类型变量名=常量值;

    //抽象方法

    [public] [abstract] [native] 返回值类型方法名(参数列表);

    }

    实现接口格式:

    [修饰符] class 类名[extends 父类名] [implements 接口A,接口B,···]

    {

    类成员变量和成员方法;

    为接口A中的所有方法编写方法体,实现接口A;

    为接口B中的所有方法编写方法体,实现接口B;

    }

    实例:

    本例定义接口AreaInterface,其中有静态常量pai和求面积的抽象方法area()。类Circle和类Rectangle实现了AreaInterface接口,即为接口中的抽象方法area()编写了满足各自要求的方法体,分别求圆形和长方形的面积。

    程序:AreaInterface.java

    1

    2

    3

    4

    5

    package jiekou;

    public interface AreaInterface{

    double pai=Math.PI;

    double area();

    }

    程序:Circle.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    package jiekou;

    public class Circle implements AreaInterface{

    double r;

    public Circle(double x){

    r=x;

    }

    //实现接口中的抽象方法,求圆面积

    public double area(){

    return pai * r * r;

    }

    public String toString(){

    return "圆:r="+r+" area="+area();

    }

    }

    程序:Rectangle.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    package iekou;

    public class Rectangle implements AreaInterface{

    double x,y;

    public Rectangle(double a,double b){

    x=a;

    y=b;

    }

    public double area()//实现接口中的抽象方法,求长方形面积

    {

    return x * y;

    }

    public String toString()

    {

    return "长方形:x="+x+";y="+y+" "

    area=+area();

    }

    }

     

    Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。

    一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。

    不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。

    在语法上,抽象类和接口有着以下不同:

    1.abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 继承抽象类使用的是extends关键字,实现接口使用的是implements关键字,继承写在前面,实现接口写在后面。如果实现多个接口,中间用逗号分隔。例:

    public class Main extends JApplet

    public class Main implements Runnable

    public class Main extends JApplet implements ActionListener

    public class Main extends JApplet implements ActionListener, Runnable

    2.在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

    3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

    4.实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

    5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

    6.抽象类中的变量默认具有 friendly权限,其值可以在子类中重新定义,也可以重新赋值。

    7.接口中的方法默认都是 public abstract 类型的。

  • 相关阅读:
    ajax专题
    luogu P1346 电车 最短路
    luogu P1462 通往奥格瑞玛的道路 最短路
    luogu P1328 生活大爆炸版石头剪刀布
    luogu P1315 联合权值 枚举
    luogu P1156 垃圾陷阱 背包问题
    luogu P1217 回文质数 枚举
    luogu P3650 滑雪课程设计 枚举
    luogu1209 修理牛棚 贪心
    luogu P1223 排队接水 贪心
  • 原文地址:https://www.cnblogs.com/Logo-TPM/p/6147038.html
Copyright © 2011-2022 走看看