zoukankan      html  css  js  c++  java
  • java中的接口与继承,接口的例子讲解

    extends 继承类;implements 实现接口。

    简单说:

    1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,

    2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,

    3.继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,

    比如  class A extends B implementsC,D,E  

    extends和implements有什么不同?

         对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。 

         interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。在interface之间也可以声明为extends(多继承)的关系。

    注意:一个interface可以extends多个其他interface。 

    接口实例:

    例子1:

    一共包括4个类,分别是CAR.java,BigCar.java,TestCar.java,CarInterface.java。

    CAR.java:

     
    声明一个接口,不实现方法,只声明方法,接口不能实例化。

    package com.su.callback;
    
    publicinterface CAR {
    
    void start();
    
    void stop();
    
    }
    

      

    BigCar.java:

    用BigCar类实现接口CAR,实现它的方法,也就是写程序结构体。BigCar是能够实例化的,BigCar的对象是Car型的。当你需要调用接口
    CAR的方法的时候,需要用CAR的对象来调用CAR的方法,但是CAR又不能实例化,我们就可以用实现了CAR的BigCar的对象来调用CAR的方法。

    package com.su.callback;
    
     
    
    publicclass BigCar implements CAR {
    
     
    
    @Override
    
    publicvoid start() {
    
    // TODO Auto-generated method stub
    
    System.out.println("bigcar start...");
    
    }
    
     
    
    @Override
    
    publicvoid stop() {
    
    // TODO Auto-generated method stub
    
    System.out.println("bigcar stop!");
    
    }
    
     
    
    } 

    TestCar.java:

    用opeCar方法调用Car的方法。

    package com.su.callback;
    
     
    
    publicclass TestCar {
    
    publicvoid operCar(CAR c)
    
    {
    
    c.start();
    
    c.stop();
    
    }
    
    }
    

      

    TestInterface.java:

    调用operCar方法,需要传实参进去,实参需要是一个对象,对象是BigCar(实现了接口的类)的实例化对象。

    package com.su.callback;
    
     
    
    publicclass TestInterface {
    
    publicstaticvoid main(String[] args)
    
    {
    
    TestCar tc=new TestCar();
    
    BigCar bc =new BigCar();
    
     
    
    tc.operCar(bc);
    
    }
    
    }
    

      

    输出结果:

    bigcar start...
    bigcar  stop!

    总结:当我们调用接口A的方法:Amethod()的时候,通过调用以接口为参数的函数:b(A a) 来调用接口的函数Amethod(),要想调用b,需要传实参进去。

    例子2:

    //接口类:JK.java

    package com.su.callback;
    
     
    publicinterface JK {
    
    // 接口中可以有几个方法的声明
    
    publicvoid MethodA();
    
    publicvoid MethodB();
    
    }
    

      

    //接口的实现类 ImplementJK.java

    package com.su.callback;
    
    
    publicclass ImplementJK implements JK {
    
    
    @Override
    
    publicvoid MethodA() {
    
    // TODO Auto-generated method stub
    
     
    
    System.out.println("接口JK的MethodA实现。。");
    
    }
    
    
    @Override
    
    publicvoid MethodB() {
    
    // TODO Auto-generated method stub
    
    System.out.println("接口JK的MethodB实现。。");
    
     
    
    }
    
     
    
    }
    

      

    //调用接口的方法的类DJK.java

    package com.su.callback;
    
     
    
    publicclass DJK {
    
    publicstaticvoid main(String args[]){
    
    ImplementJK implementJk=new ImplementJK();
    
    implementJk.MethodA();
    
    implementJk.MethodB();
    
    }
    
    }
    

      

    只调用MehtodA的时候,就只执行MethodA ,

    总结:接口的对象可以调用接口的方法,接口的实现类的对象也可以调用接口的方法。

    例子1:定义一个类TestCar,用这个类的方法(以接口为参数)调用接口的两个方法,再用另外一个类TestInterface调用TestCar的一个方法达到调用接口的两个方法的作用。

    例子2:直接用接口的实现类的实例,调用接口的方法。

  • 相关阅读:
    HTMLDOM
    换行
    【iOS】APP之数据存储
    开启远程XUL
    iOS之Streams
    Plugin的生命周期
    ActiveX Control Test Container
    ObjectiveC Runtime III【objc_msgSend函数】
    What is a Digital Signature?
    JS变量作用域
  • 原文地址:https://www.cnblogs.com/smuxiaolei/p/9240767.html
Copyright © 2011-2022 走看看