1 package face_09; 2 3 4 5 6 abstract class AbsDemo{ 7 abstract void show1(); 8 abstract void show2(); 9 } 10 /* 11 * 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用 12 * 另一种形式定义和表示,就是接口 interface。 13 */ 14 //定义接口使用的关键字不是class,是interface 15 16 /* 17 * 对于接口当中常见的成员,而且这些成员都有固定的修饰符。 18 * 1,全局常量。 public static final 19 * 2,抽象方法。 public abstract 20 * 由此得出结论,接口中的成员都是公共的权限。 21 */ 22 23 interface Demo{//虽然不是class类但编译完还是class文件 24 public static final int NUM = 4;//即使没写public staitic finale 和public abstract 系统会自动加上 25 public abstract void show1(); 26 public abstract void show2();//如果没写public abstract,你用非public方法覆盖可能会出错,权限冲突 27 } 28 //类与类之间是继承关系,类与接口直接是实现关系。 29 /* 30 * 接口不可以实例化。 31 * 32 * 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。 33 * 否则,这个子类就是一个抽象类。 34 */ 35 class DemoImpl implements /*实现*/Demo { 36 public void show1() { 37 38 } 39 public void show2() { 40 41 } 42 } 43 /* 44 * 在java中不直接支持多继承,因为会出现调用的不确定性。 45 * 所以java将多继承机制进行改良,在java中变成了多实现。 46 * 47 * 一个类可以实现多个接口。 48 */ 49 interface A { 50 public abstract void show(); 51 } 52 interface Z{ 53 public abstract void show(int a);//即使有返回值也可以实现,这只是个功能,但是实现的两个方法不能重名 54 } 55 class Test implements A,Z{//多实现 56 public void show() { 57 58 } 59 public void show(int a) { 60 61 } 62 } 63 64 /* 65 * 一个类在继承另一个类的同时,还可以实现多个接口。 66 */ 67 class Q{ 68 public void method() { 69 70 } 71 } 72 abstract class Test2 extends Q implements A,Z { 73 74 } 75 /* 76 * 接口的出现避免了单继承的局限性。 77 * 78 */ 79 interface CC{ 80 void show(); 81 } 82 interface MM{ 83 void method(); 84 } 85 interface QQ extends CC,MM{//接口与接口之间是继承关系,而且接口可以多继承 86 void fuction(); 87 } 88 class WW implements QQ{ 89 //覆盖三个方法。 90 public void show() {}; 91 public void method() {}; 92 public void function() {}; 93 } 94 public class InterfaceDemo { 95 public static void main(String[] args) { 96 Test test = new Test(); 97 test.show();//防止多继承带来的隐患 因为没有了方法体 98 DemoImpl d = new DemoImpl(); 99 System.out.println(d.NUM); 100 System.out.println(DemoImpl.NUM); 101 System.out.println(Demo.NUM); 102 } 103 } 104 /* 105 * 接口的特点: 106 * 1,接口是对外暴露的规则。 107 * 2,接口是程序的功能扩展。 108 * 3,接口的出现降低耦合性。 109 * 4,接口可以用来多实现。 110 * 5,类与接口是实现关系,而且类可以继承一个类的同时实现多个接口。 111 * 6,接口与接口之间可以有继承关系。 112 */