Java超详细讲解接口的实现与用法

网友投稿 213 2022-10-09

Java超详细讲解接口的实现与用法

目录1.接口的定义2.接口的实现3.接口的引用4.接口的继承5.利用接口实现多重继承

1.接口的定义

接口是一种特殊的抽象类,是java提供的一个重要的功能,与抽象类不同的是:

接口的所有数据成员都是静态的且必须初始化。接口中的所有方法必须都是抽象方法,不能有一般的方法。

[public] interface 接口名称 [extends  父接口名列表]{    [public] [static] [final]数据类型 成员变量名 = 常量;    ...    [public][abstract]返回值数据类型 方法名(参数表);    ...}

其中,成员方法必须都是抽象方法。接口定义的[ ]中的修饰符可以省略,省略后默认为以上访问权限。

---------------分割线---------------

2.接口的实现

接口和抽象类一样不能用来实例化对象,必须借用接口的特征创建出来一个新的类,然后用新的类来实例化对象。

利用接口创建新的CYUZprM类的过程称为接口的实现。实现一个接口的过程使用implements关键字。

class 类名称 implements 接口名表{    ...}

如果实现某接口的类不是抽象类,那么它必须实现指定接口的所有抽象方法。类在实现接口的方法时必须显式的使用pulic访问权限修饰符,子类覆盖父类方法时不可以缩小父类方法的访问权限范围。

---------------分割线---------------

3.接口的引用

接口可以作为一种引用类型来使用,任何实现该接口的类实例化的对象都可以储存在该接口类型的变量中,通过这些变量访问类所实现的接口中的方法。

---------------分割线---------------

4.接口的继承

当然啦!接口和类一样也可以使用继承派生出来新的类。也可以通过extends关键字来实现,被继承的接口称为父接口,派生出来的新接口称为子接口。但是不同的是,一个子接口可以同时有多个直接父接口。它们之间用逗号分隔。子接口继承父接口的所有变量和方法。

如果子接口中定义了和父接口同名的常量,父接口中的常量被隐藏,如果时方法,则被覆盖。

interface A{

abstract void print1();

}

interface B extends A{

abstract http://void print2();

}

class C implements B{

public void print1(){

System.out.print("Hello");

}

public void print2(){

System.out.print("World");

}

}

public class Print{

public static void main(String[] args){

B b=new C();

b.print1();

b.print2();

}

}

其中B接口是A接口的直接父接口,C类实现B接口,覆盖B接口中的所有的抽象方法。Print类是主类,定义接口的引用指向实现它的类的实例化对象,访问类所实现的接口中的方法。(接口作为引用数据类型使用)

---------------分割线---------------

5.利用接口实现多重继承

由于Java不支持多重继承,所以可以利用接口实现类似于多重继承的机制,同时规避了C++多重继承中存在很多歧义的问题,使代码更加简洁,逻辑清晰,安全可靠。一个类只能有一个直接父类,但是它可以同时实现多个接口,可以把接口理解为类,即实现了Java类的多重继承。

//filename:Cylinder.java

interface Face1{

final double PI=3.14;

abstract double area();

}

interface Face2{

abstract void volume();

}

public class Cylinder implements Face1,Face2{

private double radius;

private int height;

public Cylinder(double r,int h){

radius=r;

height=h;

}

public double area(){

return PI*radius*radius;

}

public void volume(){

System.out.print("圆柱体的体积="+this.area()*height);

}

public static void main(String[] args){

Cylinder volu=new Cylinder(5.0,2);

volu.volume();

}

}

//圆柱体的体积=157.0

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小白必读——CCR机器人2.0基础名词解释(列表字段)
下一篇:#yyds干货盘点# Prometheus Exporter(十二) Consul Exporter
相关文章

 发表评论

暂时没有评论,来抢沙发吧~