java接口概述及特点_javajava接口概述及特点_子类_02
  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  */
View Code