多态

来源:互联网 发布:家用菜刀 知乎 编辑:程序博客网 时间: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("执行了订单管理操作");

}

}

 

接口的应用之--策略设计模式

把可变的行为抽象出来,定义一系列的算法,将每种算法独立出来,并可以相互替换使用

策略模式可以让算法独立于使用他的客户而独立变化。

0 0
原创粉丝点击