博客
关于我
第十章多态及软件复用
阅读量:188 次
发布时间:2019-02-28

本文共 1432 字,大约阅读时间需要 4 分钟。

多态及软件复用

多态

多态是编程语言中的一个核心概念,它允许同一个名称绑定多个不同函数或类。多态的实现方式主要有三种形式:重载、改写和多态变量。

重载(专用多态)

重载是通过类型签名的区分来实现的。当函数名相同但参数类型不同时,编译器会生成不同的函数。例如:

class Overloader {
public void example(int x) {}
public void example(int x, double y) {}
public void example(String x) {}
}

这种方式在函数名相同但参数类型不同的情况下,允许编写多个函数。

改写(包含多态)

改写是通过层次关系实现的。当子类继承父类时,如果子类重写父类的方法,同一个函数名会在不同层次中有不同的实现。例如:

class Parent {
public void example(int x) {}
}
class Child extends Parent {
public void example(int x) {}
}

这种方式适用于父类和子类之间的方法重写。

多态变量

多态变量允许在运行时根据实际使用的类型决定函数或方法的执行。例如:

Parent p = new Child();

这里,变量 p 被声明为 Parent 类型,但实际引用的是 Child 类的实例。

泛型(模板)

泛型是一种通用工具,允许在编译时定义通用的数据结构。例如:

template 
class Max {
public static T max(T left, T right) {
if (left > right) {
return left;
} else {
return right;
}
}
}

泛型可以创建如最大值计算等通用工具。


软件复用机制

软件复用是通过继承和组合实现的,是开发高质量软件的核心技术。

组合

组合是一种将现有软件组件利用来构建新应用程序的方法。例如,List 类可以通过组合来构造集合抽象:

class List {
List() {}
void add(int);
int firstElement();
int size();
bool includes(int);
void remove(int);
}

组合允许我们在特定场景下执行特定的操作,而无需考虑所有可能的操作。

继承

继承是一种通过类之间的关系来扩展现有类的方法。例如,Set 类可以继承 List 类:

class Set extends List {
Set() {}
public:
void add(int);
int size();
}

继承使新类自动获得父类的所有数据和方法,从而简化了代码编写。

组合与继承的比较

组合和继承各有优缺点。组合简单易用,但无法自动继承父类的所有操作;继承代码简洁,但无法确保子类方法不会被错误地使用。因此,选择组合还是继承取决于具体需求。


通过多态和软件复用机制,开发者可以更高效地构建复杂的应用程序。在实际编程中,组合和继承结合使用,是解决复杂问题的有效途径。

转载地址:http://etzs.baihongyu.com/

你可能感兴趣的文章
mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
查看>>
MySQL 快速创建千万级测试数据
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
MySql 手动执行主从备份
查看>>
Mysql 批量修改四种方式效率对比(一)
查看>>
mysql 批量插入
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>