概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。

接口抽象的就是某种方法。

OO设计原则:1.面向接口编程  2.封装变化  3.多用组合,少用继承

 public class Practice14 {

     public static void main(String[] args) {
// TODO Auto-generated method stub
//用父类的引用指向子类对象
Bird d=new BigBird("小白");
d.setF(new Fly());
d.fly();
Bird d1=new BigBird("小黑");
d1.setF(new NoFly());
d1.fly();
}
}
//接口
interface FlyType{
void fly();
} class Fly implements FlyType{
public void fly(){
System.out.println("我会飞");
}
}
class NoFly implements FlyType{
public void fly(){
System.out.println("我不会飞");
}
}
//抽象类
abstract class Bird{
private String name;
private FlyType f;//组合
public Bird(String name){
this.name=name;
}
public FlyType getF() {
return f;
}
public void setF(FlyType f) {
this.f = f;
}
public void fly(){
System.out.println("我的名字叫"+name);
f.fly();
} } class BigBird extends Bird{
public BigBird(String name){
super(name);
}
}
class ModelBird extends Bird{
public ModelBird(String name){
super(name);
}
}

最新文章

  1. iOS微信第三方登录实现
  2. 火车头采集ecshop 文章接口文件
  3. Docker - Docker国内镜像的配置及使用
  4. CBarChart柱形图类
  5. 获取元素在浏览器中的绝对位置(从jquery1.8中抠出来)
  6. 再看.net本质(二)
  7. javascript实现KMP算法(没啥实用价值,只供学习)
  8. jFinal中报对应模型不存在的错误(The Table mapping of model: demo.User not exists)
  9. Ubuntu密码忘记了怎么办(转载)
  10. 3.python元组与列表
  11. selenium2自动化测试学习笔记(五)-参数化编程,自动登陆网易QQ邮箱
  12. Python——开发一个自动化微信投票器【附代码实例方法】
  13. 使用scrapy爬取海外网学习频道
  14. 20165318 2017-2018-2《Java程序设计》课程总结
  15. 04 Maven 仓库
  16. OAuth2学习笔记
  17. 从父子组件的mounted钩子的同步执行与页面的异步渲染看nextTick的用法
  18. 城联数据TSM技术方案起底
  19. px、dp、sp、mm、in、pt这些单位有什么区别?
  20. 项目记录 -- zfs get all [volume] python实现的数据构造

热门文章

  1. 深入理解javascript中的立即执行函数
  2. IAR常用快捷键及技巧
  3. POJ百练—IP地址转换
  4. js一个游戏小笔记
  5. kafka 基础知识梳理(转载)
  6. java报表开发之报表总述
  7. k8s基础 etcd参数
  8. arguments详解
  9. lyui 列表 上传
  10. 报错:defined for 'courierAction_pageQuery' in namespace '/'Error creating bean with name 'cn.itcast.bos.web.action.base.CourierAction': Injection of autowired dependencies failed; nested exception is or