IDC

浅析Java语言中接口的特点和继承

作者:admin 2021-07-04 我要评论

一、接口的继承 1.定义一个接口使用extends关键字来继承另一个接口,这就是接口的继承。 2.语法: [修饰符]interface接口名extends父类接口1,父类接口2,{ 定义常...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

一、接口的继承

1.定义一个接口使用extends关键字来继承另一个接口,这就是接口的继承。

2.语法:

  1. [修饰符] interface 接口名 extends 父类接口1, 父类接口2, …{ 
  2.         定义常量0个或多个; 
  3.         定义抽象方法0个或多个; 

3.如何实现接口的继承关系例子

  1. //定义Printer接口 
  2. interface Printer{ 
  3.     int max_line=20;//定义全局常量 
  4.     void printRun();//定义抽象方法pirntRun() 
  5.     void printData();//定义抽象方法printData() 
  6. //定义了Autopriner接口,然后继承Printer接口 
  7. interface Autoprinter extends Printer{//接口继承 
  8.     void autoPrint();//定义抽象方法autoPrint()方法 
  9.  
  10. //Colorprinter类实现Printer接口 
  11. class Colorprinter implements Autoprinter{ 
  12.     //实现printRun()方法 
  13.     public void printRun(){ 
  14.         System.out.println("彩色打印机正在启动"); 
  15.   } 
  16.     //实现printData()方法 
  17.     public void printData(){ 
  18.         System.out.println("彩色打印机正在打印中"); 
  19.   } 
  20.     //实现autoPrint()方法 
  21.     public void autoPrint(){ 
  22.         System.out.println("彩色打印机自动打印"); 
  23.   } 
  24.  
  25. public class p27 { 
  26.     public static void main(String[] args) { 
  27.         // TODO Auto-generated method stub 
  28.         Colorprinter c=new Colorprinter();//创建Colorprinter类的实例对象 
  29.         c.printRun();//调用Colorprinter类的printRun()方法 
  30.         c.printData();//调用Colorprinter类的printData()方法 
  31.         c.autoPrint();//调用Colorprinter类的autoPrint()方法 
  32.   } 

输出的结果是:

  • 彩色打印机正在启动
  • 彩色打印机正在打印中
  • 彩色打印机自动打印

从上面的代码中,首先是定义了Printer接口,定义全局常量和两个方法分别是printRun()和printData(),然后再定义一个Autopriner接口来继承Printer接口,再Colorprinter类实现Printer接口,此时,Autopriner接口有三个抽象方法,通过Colorprinter类实例化对象然后调用对应的方法。

二、接口的特点

1.接口里的方法是抽象的,不可以去实例化对象。

2.如果实现某接口的类是抽象类,那么可以不实现该接口的所有方法。对于这个抽象类任何一个不是抽象类的子类来说,就需要实现所有抽象方法。

3.一个类使用implements关键字实现多个接口

例如:

  1. //定义A接口 
  2. interface A{ 
  3.     int MAX=1;//定义全局常量 
  4.     void testA();//定义抽象方法testA() 
  5. //定义B接口 
  6. interface B{ 
  7.     int MAX=2;//定义全局常量 
  8.     void testB();//定义抽象方法testB() 
  9. //定义一个类实现A,B接口 
  10. class C implements A,B{ 
  11.     int MAX=3;//定义全局常量 
  12.     //实现testB()方法 
  13.     @Override 
  14.     public void testB() { 
  15.         // TODO Auto-generated method stub 
  16.         System.out.println("我是B"); 
  17.     //实现testA()方法 
  18.     @Override 
  19.     public void testA() { 
  20.         // TODO Auto-generated method stub 
  21.         System.out.println("我是A"); 
  22.   } 
  23. public class p28 { 
  24.     public static void main(String[] args) { 
  25.         // TODO Auto-generated method stub 
  26.         C c=new C();//创建C类实例对象 
  27.         c.testA();//调用C类的testA()方法 
  28.         c.testB();//调用C类的testB()方法 
  29.   } 

运行的结果是:

  • 我是A
  • 我是B

从上面代码中,定义了A和B接口,在C类中使用implements关键字实现A和B的接口的方法,实例化对象并调用对应的方法。

4.一个接口使用extends关键字实现继承多个接口

例如:

  1. //定义A接口 
  2. interface A{ 
  3.     int MAX=1;//定义全局常量 
  4.     void testA();//定义抽象方法testA() 
  5. //定义B接口 
  6. interface B{ 
  7.     int MAX=2;//定义全局常量 
  8.     void testB();//定义抽象方法testB() 
  9. //定义接口继承A,B接口 
  10. interface C extends A,B{ 
  11.     int MAX=3;//定义全局常量 
  12.     void testC();//定义testC()方法 
  13. public class p29 { 
  14.     public static void main(String[] args) { 
  15.         // TODO Auto-generated method stub 
  16.         System.out.println(A.MAX); 
  17.         System.out.println(B.MAX); 
  18.         System.out.println(C.MAX); 
  19.   } 

运行的结果是:

  1.  

5.一个类在实现某接口的抽象方法,就需要使用一样的方法头。

6.如果实现某接口的类不是抽象类,那么类的定义部分需要实现指定接口的所有抽象方法。

三、总结

本文主要介绍了接口的继承和接口的特点。

接口的继承是定义一个接口使用extends关键字来继承另一个接口,通过如何实现接口的继承例子来帮助大家的理解这个用法。

一个类使用implements关键字实现多个接口,一个接口使用extends关键字实现继承多个接口。

本文转载自微信公众号「Java进阶学习交流」,可以通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/orrUYz2zkG4ANlmRDnrD-A

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • []*T *[]T *[]*T 傻傻分不清楚

    []*T *[]T *[]*T 傻傻分不清楚

  • B站,牛逼!

    B站,牛逼!

  • 如何保证 Serverless 业务部署更新的一

    如何保证 Serverless 业务部署更新的一

  • Room 中的数据库自动迁移功能

    Room 中的数据库自动迁移功能

腾讯云代理商
海外云服务器