A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© muma 中级黑马   /  2014-4-12 22:37  /  984 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口(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();
    }
}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

您需要登录后才可以回帖 登录 | 加入黑马