多态
来源:互联网 发布:家用菜刀 知乎 编辑:程序博客网 时间:2024/06/17 18:48
多态是面向对象的三大特征之一。
面向对象特征:封装、继承、多态,抽象
多态:对象在运行过程中的多种形态。
//用父类的引用指向子类对象(用大的类型去接受小的类型,向上转型、自动转换)
Chicken home = new HomeChicken();
在编程时针对抽象类型的编写代码,称为面向抽象编程(面向接口编程)
抽象(父类)
父类通常都定义为抽象类、接口
instanceof关键字
是用于检查对象是否为指定的类型,通常在把父类引用强制转换为子类引用时要使用,
以避免发生类型转换异常(ClassCastException)
抽象类应用
抽象类中定义一个算法的骨架,把部分实现通过抽象方法的方式延迟到子类中去实现,
这样把变化的部分和不变的部分组合到一起,让一个算法可以适应多种变化。
接口应用
把可变的行为抽象出来,定义为接口,分别给接口提供多种实现,在需要该行为的类中
去组合接口,并给接口提供设值方法,这样可以在真正使用这个类时,再根据需求传入
接口的实例,通过组合的方式,让该类达到高度的灵活性。
OO原则:
(1)对修改关闭,对扩展开放
(2)面向接口编程
(3)多用组合,少用继承
抽象类应用之--模板方法设计模式
什么是模板设计模式:定义一个算法的骨架(流程,步骤),把可变的部分延迟到子类中
实现,好处是不改变原有算法结构的情况下,让子类实现算法结构中的部分功能。
(可变)
abstract class BaseManager{
public String username;
public void action(){
if(null==username || "".equals(username)){
System.out.println("请登录后,再操作!");
}else{
execute();
}
}
public abstract void execute();
}
class UserManager extends BaseManager{
public void execute(){
System.out.println("执行了用户管理操作");
}
}
class RoleManager{
public void execute(){
System.out.println("执行了角色管理操作");
}
}
class OrderManager extends BaseManager{
public void execute(){
System.out.println("执行了订单管理操作");
}
}
接口的应用之--策略设计模式
把可变的行为抽象出来,定义一系列的算法,将每种算法独立出来,并可以相互替换使用
策略模式可以让算法独立于使用他的客户而独立变化。
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 图片加文字印章和水印 Java
- intellij idea中每次修改jsp等文件时不用再重新启动tomcat的方法
- spring源码学习---bean获取
- 关于PHP框架学习的选择
- 关于windows连接虚拟机中的linux
- 多态
- C++ 友元
- 面试算法-------确定两个字符串乱序同构
- 3.3Javascript函数-调用函数
- java中String\十六进制String\byte[]之间相互转换函数
- Two Sum
- Majority Element
- VS2010配置DirectX 11
- acm书中题目 p-16