package cn.china; abstract class AbsDemo{ abstract void show1(); abstract void show2(); } /** *当一个抽象类中的方法都是抽象的时候,这时能够将该抽象类用 *另外一种形式定义和表示,就是 接口 interface * *定义接口使用的关键字不是class,是interface。 **/ interface Demo5{ public static final int NUMBER=4; public abstract void show1(); public abstract void show2(); } /** * 类与类之间是继承关系,类与接口是实现关系。 * 接口不能实例化 * 只能由实现了接口的子类并覆盖了接口中全部的抽象方法后,该子类才能够实例化 * 不然,这个子类就是一个抽象类*/ class DemoImpl implements Demo5{ public void show1(){} public void show2(){} } /** * 对于接口当中常见的成员,并且这些成员都有固定的修饰符 * 一、全局常量:public static final * 二、抽象方法 public abstract * 由此得出结论,接口中的成员都是公共的权限。*/ /** * java中不支持多继承,由于会出现调用的不肯定性。 * 因此java将多继承进行改良,java中变成多实现。 * 一个类能够实现多个接口*/ interface Aa{ public abstract void show6(); } interface Bb{ public abstract void show6(); } class Test1 implements Aa,Bb{ public void show6(){ } } /** * 一个类在继承另外一个类的同时,还能够实现多个接口 * 接口与接口*/ class q{ public void method(){} } class Test2 extends q implements Aa,Bb{ public void show6(){ } interface cc{ void showa(); } interface mm{ void showb(); } interface qq extends cc,mm{//接口与接口能够多继承关系,并且接口能够多继承 void function(); } class ww implements qq{ public void showa(){} public void showb(){} public void function(){} } } /** * 抽象类与接口的异同点: * 相同点:都是不断向上抽取而来的 * 不一样点: * 一、抽象类须要被单继承abstract,接口须要被多实现implements * 二、抽象类中能够定义抽象方法和非抽象方法,此类继承后能够直接使用非抽象方法。 * 接口中只能定义抽象方法,必须由子类去实现 * 三、抽象类是 is a关系在定义该体系共性能容;接口是like a关系,定义体系的额外功能。 * * 例: 学生有学习功能 能够被提取定义抽象类 ; * 学生抽烟功能, 是额外功能 使用interface 接口定义 * * 例: * 犬按功能分,有导盲犬,搜救犬 * abstract class 犬{ * abstract void 吼叫(); * } * class 导盲犬 extends 犬 implements 导盲{ * public void 吼叫(){} * public void 导盲(){} * } * interface 导盲{ * abstract void 导盲(); * }*/ //在不一样的问题领域中,有不一样的分析方式。 /** * 笔记本电脑使用, * 为了扩展笔记本功能,担往后出现什么功能设备不知道 * * 定义一个规则,只要往后出现的设备都符合这个规则就能够了 * 规则在java中就是接口 interface*/ // class Mouse{ // // } //class Bookpc{ // public static void main(String[]args){ // useMouse(new Mouse()); // } // public static void useMouse(Mouse m){ // m.open(); // } //} interface USB{ //暴漏规则 public abstract void open(); public abstract void close(); } public class Interface{ public static void main(String[]args){ // DemoImpl D=new DemoImpl(); // System.out.println(D.NUMBER); // System.out.println(DemoImpl.NUMBER); // System.out.println(Demo.NUMBER); // TODO Auto-generated method stub // Test1 t=new Test1(); // t.show6(); //useUSB(null); UPan U=new UPan(); useUSB(U);//功能扩展了 } //使用规则 public static void useUSB(USB u){//接口类型的引用,用于接收(指向)接口子类的对象。 u.open(); u.close(); } //实现规则 class UPan implements USB{ public void open(){ System.out.println("UPan open"); } public void close(){ System.out.println("UPan close"); } } }