浅析Java语言中接口的特点和继承相关知识

发表于:2022-2-22 09:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Java进阶者    来源:Java进阶学习交流

  前面几篇文章Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制、一篇文章带你了解this关键字和单例模式、Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下Java知识中的接口及其继承知识,一起来看看吧。
  一、接口的继承
  1.定义一个接口使用extends关键字来继承另一个接口,这就是接口的继承。
  2.语法:
  [修饰符] interface 接口名 extends 父类接口1, 父类接口2, …{
          定义常量0个或多个;
          定义抽象方法0个或多个;
  }

  3.如何实现接口的继承关系例子
  //定义Printer接口
  interface Printer{
      int max_line=20;//定义全局常量
      void printRun();//定义抽象方法pirntRun()
      void printData();//定义抽象方法printData()
  }
  //定义了Autopriner接口,然后继承Printer接口
  interface Autoprinter extends Printer{//接口继承
      void autoPrint();//定义抽象方法autoPrint()方法
  }
  //Colorprinter类实现Printer接口
  class Colorprinter implements Autoprinter{
      //实现printRun()方法
      public void printRun(){
          System.out.println("彩色打印机正在启动");
    }
      //实现printData()方法
      public void printData(){
          System.out.println("彩色打印机正在打印中");
    }
      //实现autoPrint()方法
      public void autoPrint(){
          System.out.println("彩色打印机自动打印");
    }
  }
  public class p27 {
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          Colorprinter c=new Colorprinter();//创建Colorprinter类的实例对象
          c.printRun();//调用Colorprinter类的printRun()方法
          c.printData();//调用Colorprinter类的printData()方法
          c.autoPrint();//调用Colorprinter类的autoPrint()方法
    }
  }

  输出的结果是:
  彩色打印机正在启动
  彩色打印机正在打印中
  彩色打印机自动打印

  从上面的代码中,首先是定义了Printer接口,定义全局常量和两个方法分别是printRun()和printData(),然后再定义一个Autopriner接口来继承Printer接口,再Colorprinter类实现Printer接口,此时,Autopriner接口有三个抽象方法,通过Colorprinter类实例化对象然后调用对应的方法。
  二、接口的特点
  1.接口里的方法是抽象的,不可以去实例化对象。
  2.如果实现某接口的类是抽象类,那么可以不实现该接口的所有方法。对于这个抽象类任何一个不是抽象类的子类来说,就需要实现所有抽象方法。
  3.一个类使用implements关键字实现多个接口
  例如:
  //定义A接口
  interface A{
      int MAX=1;//定义全局常量
      void testA();//定义抽象方法testA()
  }
  //定义B接口
  interface B{
      int MAX=2;//定义全局常量
      void testB();//定义抽象方法testB()
  }
  //定义一个类实现A,B接口
  class C implements A,B{
      int MAX=3;//定义全局常量
      //实现testB()方法
      @Override
      public void testB() {
          // TODO Auto-generated method stub
          System.out.println("我是B");
  }
      //实现testA()方法
      @Override
      public void testA() {
          // TODO Auto-generated method stub
          System.out.println("我是A");
    }
  }
  public class p28 {
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          C c=new C();//创建C类实例对象
          c.testA();//调用C类的testA()方法
          c.testB();//调用C类的testB()方法
    }
  }

  运行的结果是:
  我是A
  我是B

  从上面代码中,定义了A和B接口,在C类中使用implements关键字实现A和B的接口的方法,实例化对象并调用对应的方法。
  4.一个接口使用extends关键字实现继承多个接口
  例如:
  //定义A接口
  interface A{
      int MAX=1;//定义全局常量
      void testA();//定义抽象方法testA()
  }
  //定义B接口
  interface B{
      int MAX=2;//定义全局常量
      void testB();//定义抽象方法testB()
  }
  //定义接口继承A,B接口
  interface C extends A,B{
      int MAX=3;//定义全局常量
      void testC();//定义testC()方法
  }
  public class p29 {
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          System.out.println(A.MAX);
          System.out.println(B.MAX);
          System.out.println(C.MAX);
    }
  }

  运行的结果是:
  1
  2
  3

  5.一个类在实现某接口的抽象方法,就需要使用一样的方法头。
  6.如果实现某接口的类不是抽象类,那么类的定义部分需要实现指定接口的所有抽象方法。
  三、总结
  本文主要介绍了接口的继承和接口的特点。
  接口的继承是定义一个接口使用extends关键字来继承另一个接口,通过如何实现接口的继承例子来帮助大家的理解这个用法。
  一个类使用implements关键字实现多个接口,一个接口使用extends关键字实现继承多个接口。
  希望大家通过本文的学习,对你有所帮助!

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号