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:直接用接口的实现类的实例,调用接口的方法。