1、接口概述
a、接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法都没有方法体。
b、接口中定义的方法必须被定义为public或abstract形式,其它修饰权不被java编译器认可,即使不将该方法声明为public形式,它也是public。
c、接口中定义的任何字段都自动是static和final的。
语法如下:
public interface drawTest{
viod draw(); //接口内的方法,省略abstact关键字
}
public:接口可以像类一样被权限修饰符修饰,但是public关键字仅限用于接口卡在与其同名的文件中被定义
interface:定义接口关键字
drawTest:接口名称
例如:一个类实现一个接口可以使用implements关键字,代码如下
public class Parallelogram extends Quadrangle implements drawTest{
...//
}
例子10.13【将多态技术与接口结合】
1 interface drawTest { // 定义接口 2 public void draw(); // 定义方法 3 } 4 5 // 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口 6 class ParallelogramgleUseInterface extends QuadrangleUseInterface 7 implements drawTest { 8 public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法 9 System.out.println("平行四边形.draw()"); 10 } 11 12 void doAnyThing() { // 覆盖父类方法 13 // SomeSentence 14 } 15 } 16 17 class SquareUseInterface extends QuadrangleUseInterface implements 18 drawTest { 19 public void draw() { 20 System.out.println("正方形.draw()"); 21 } 22 23 void doAnyThing() { 24 // SomeSentence 25 } 26 } 27 28 class AnyThingUseInterface extends QuadrangleUseInterface { 29 void doAnyThing() { 30 31 } 32 } 33 34 public class QuadrangleUseInterface { // 定义四边形类 35 public void doAnyTthing() { 36 // SomeSentence 37 } 38 39 public static void main(String[] args) { 40 drawTest[] d = { // 接口也可以进行向上转型操作 41 new SquareUseInterface(), new ParallelogramgleUseInterface() }; 42 for (int i = 0; i < d.length; i++) { 43 d[i].draw(); // 调用draw()方法 44 } 45 } 46 }
2、接口与继承
a、我们知道在java中不允许多重继承,但使用接口就可以实现多重继承,因为一个类可以同时实现多个接口,这样可以将所有需要继承的接口放置在implements关键字后并使用逗号隔开,但这可能会在一个类中产生庞大的代码量,因为继承一个接口时需要实现接口中所有的方法。
多重继承的语法如下:
class 类名 implements 接口1,接口2,...,接口n
b、在定义一个接口时也可以使该接口继承另外一个接口。
interface intf1{
}
interface intf2 extends intf1{
}