接口(interface) 接口只定义了类应当遵循的规范,却不关心这些类的内部数据和其方法内的实现细节. 接口只规定了这些类里必须提供的方法;从而分离了规范和实现.增强了系统的可拓展性和维护性; [修饰符] interface 接口名 extends 父接口1,父接口2.... 没有构造方法,不能实例化; 接口只能继承接口,不能继承类 接口里没有普通方法,方法全是抽象的; 接口里的方法默认修饰符是public abstract; 接口里的字段全是全局常量,默认修饰符是public static final; 接口里的成员包括(主要是前两个): 接口没有构造方法,不能实例化! 接口里的方法全部是抽象的,没有普通方法,有默认的修饰符 public abstract,必须全部覆写! 面向接口编程之简单工厂模式 制定一个标准,让别人去实现或者说满足它! 简单工厂模式 构建一个工厂出来,在里面进行生产,用的时候直接拿 总结: 好处:屏蔽不同子类实现的差异,提高代码的可拓展性和可维护性; package reviewDemo; //简单工厂模式 interface Phone{//制定标准,都要实现send()方法 public void send(); } class Iphone implements Phone{ @Override public void send() { System.out.println("Iphone手机在发短信"); } } class AndroidPhone implements Phone{ @Override public void send() { System.out.println("AndroidPhone手机在发短信"); } } class MyPhone implements Phone{ @Override public void send() { System.out.println("MyPhone手机在发短信"); } } class Factory{ public static void show(String type){//传入参数,根据不同的类型个性化定制 if(type.equals("")){//为空的情况,不用往下执行 System.out.println("对不起,类型为空!,请重新输入!"); return; } Phone p = null; if("Iphone".equals(type)){//判断类型 p = new Iphone(); }else if("AndroidPhone".equals(type)){ p = new AndroidPhone(); }else{ p = new MyPhone(); } p.send(); } } public class FactoryDemo17 { public static void main(String[] args) { new Factory().show("Iphone");//调用方法 new Factory().show("AndroidPhone"); new Factory().show("MyPhone"); new Factory().show("YourPhone"); new Factory().show(""); } } 输出: Iphone手机在发短信 AndroidPhone手机在发短信 MyPhone手机在发短信 MyPhone手机在发短信 对不起,类型为空! 面向接口编程之适配器模式 使用一个现成的类,但是它的接口不完全符合你的需求,我只想要它其中的一个方法,不想覆写其他的方法。 比如,窗体有变大,变小,关闭的行为,但是我现在只需要关闭行为; package reviewDemo; //适配器模式:只想用其中的某一个方法,用适配器作为中间的过渡 interface Windows{ void max(); void min(); void close(); } //适配器模式,实现接口所有的方法,但是不写方法体! class AdapterWindows implements Windows{ @Override public void max() { } @Override public void min() { } @Override public void close() { } } class MyWindows extends AdapterWindows{ //覆写父类的方法 public void close(){ System.out.println("这个实现的是关闭功能!"); } } public class Demo17 { public static void main(String[] args) { new MyWindows().close(); } } |