Java接口如何定义?Java接口和抽象类的区别?

2020年12月16日11:45:35 1 53

接口在Java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式来继承接口的抽象方法。下面我们一起来看看Java接口如何定义?Java接口和抽象类的区别吧。

Java接口如何定义?Java接口和抽象类的区别?

一、 接口的声明

interface 接口名称 [extends 其他的接口名]
{
    //声明变量
    //抽象方法
}

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

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

二、接口的实现

当类实现接口时,类要实现接口中所有的方法。否则,类必须声明为抽象类。类使用implements关键字实现接口。在类声明中,implements关键字放在class声明后面。

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

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

public class Cire implements CalInterface
{
    public float getArea(float r)
    {
        float area=PI*r*r;//计算圆面积并赋值给变量area
        return area;//返回计算后的圆面积
    }
    public float getCircumference(float r)
    {
        float circumference=2*PI*r;      //计算圆周长并赋值给变量circumference
        return circumference;           //返回计算后的圆周长
    }
    public static void main(String[] args)
    {
        Cire c = new Cire();
        float f = c.getArea(2.0f);
        System.out.println(Float.toString(f));
    }
}

三、接口与抽象类的异同

1)相同点

(1)都可以被继承。
(2)都不能被直接实例化。
(3)都可以包含抽象方法。
(4)派生类必须实现未实现的方法。

2)不同点

(1)接口支持多继承;抽象类不能实现多继承。
(2)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
(3)接口中的成员变量只能是public、static、final类型的;抽象类中的成员变量可以是各种类型的。
(4)接口只能定义抽象方法;抽象类既可以定义抽象方法,也可以定义实现的方法。
(5)接口中不能含有静态代码块以及静态方法(用static修饰的方法);抽象类可以有静态代码块和静态方法。

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

Java大学
  • 本文由 发表于 2020年12月16日11:45:35
  • 转载请务必保留本文链接:https://www.javadx.com/76.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 哈哈哈 哈哈哈

      Java接口和抽象类的区别很大