懵懂的菜鸟

Stay hungry,Stay foolish.

导航

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

posted on 2018-06-28 21:32  懵懂的菜鸟  阅读(6712)  评论(0编辑  收藏  举报