Java学习--接口与实现

Posted godlikeyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习--接口与实现相关的知识,希望对你有一定的参考价值。

一。接口

  使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口声明和接口体,例如:

  

interface Printable
{
      final int Max=100;
      void add();
      float sum(float x,float y);
} 

1.接口声明

  定义接口包含接口声明和接口体,和类不同的是,定义接口时使用关键字interface来声明自己是一个接口,格式如下:

  

interface 接口的名字

2.接口体

  接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是public,而且是static常量(允许省略public,final和static修饰符),所有的抽象方法的访问权限一定都是public(允许省略public abstract修饰符),例如:

interface Printable
{
    public static final int Max=100;     //等价写法:int Max=100;
    public abstract void add();          //等价写法:void add();
    public abstract float sum(float x,float y);
}

二。实现接口

1.类实现接口

  在Java语言中,接口由类来实现以便使用接口中的方法。一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名,例如A类实现Printable和Addable接口。

class A implements Printable,Addable

再如,Animal的Dog子类实现Eatable和Sleepable接口。

class Dog extends Animal implements Eatable,Sleepable

2.重写接口中的方法

  如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。需要注意的是,由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符,给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则就降低了访问权限,这是不允许的)。实现接口的非抽象类实现了该接口中的方法,即给出了方法的具体行为功能。

  下面的例子中包含China类,Japan类和Computable接口,而且China类和Japan类都实现了Computable接口。

 

  Computable.java

public interface Computable
{
    int Max=46;
    int f(int x);
}

  

  China.java

public class China implements Computable
{
    int number;
    public int f(int x)
    {
        int sum=0;
        for (int i=1;i<=x;i++)
        {
            sum=sum+i;
        }
        return sum;
    }
}

 

  Japan.java

public class Japan implements Computable
{
    int number;
    public int f(int x)
    {
        return Max+x;
    }
}

  

  Main.java

public class Main {
    public static void main(String[] args) {
        China zhang;
        Japan henlu;
        zhang=new China();
        henlu=new Japan();
        zhang.number=32+Computable.Max;
        henlu.number=14+Computable.Max;
        System.out.println("zhang的学号"+zhang.number+",zhang的求和结果"+zhang.f(100));
        System.out.println("henlu的学号"+henlu.number+",henlu的求和结果"+henlu.f(100));
    }
}

 

以上是关于Java学习--接口与实现的主要内容,如果未能解决你的问题,请参考以下文章

第七周收获

Java 封装

Java 封装

Java 封装

Java 封装

Java 封装