代码复用
——也称“代码重用”,是软件重用的一种,指在不同的软件开发过程中重复使用相同或相似的软件元素,软件元素包括程序代码、测试用例、设计文档等。
开闭原则:
- 对修改是关闭的——被复用的类,其内部的代码不应该被修改,比如string类
- 对扩展时开放的——在类的原有行为(函数成员)基础,可新增行为,也可修改(函数覆盖)原有的行为
C++的继承
格式与概念
class 类名A : 继承方式 类名B
{
新类A 称为“派生类”或者“子类”
已经编写好的类B 称为“基类”或者“父类”
- 继承
一个类从另一个类那里获得各个成员并规定相应的访问限制,前者称为派生类或者子类,后者称基类或者父类。派生类包含基类的所有成员,并可以新增成员或者覆盖(隐藏)基类的某些成员。 - 新增
派生类可以添加数据成员和函数成员 - 覆盖
派生类成员通常不应与基类成员同名。如果同名(通常是函数成员),将造成成员覆盖,访问时有特殊规则。(注意,不是对基类的修改)
class CMyTime : public CMyDate
// CMyTime(派生类,子类)继承自CMyDate(基类,父类)
{
protected:
int hour,minute,second;
//CMyTime继承了基类year等数据成员,并新增了hour等数据成员
public:
……
//CMyTime继承了基类的函数成员,并新增了若干函数成员
继承只是手段-复用才是目的
Java的继承
class 类名A extends 类名B
单文件继承
Java的一个源程序可以有多个类,但只能有最多一个public类,并且该类名必须与源程序文件同名
public class ca //extends cb
{
……
public static void main(String[] args)
{……}
}
public cb //extends ca
{
……
public static void main(String[] args)
{……}
}
源程序必须命名为ca.java
同一源程序文件中的两个类,可以根据需要安排继承与派生
访问规则
Java共有四种访问限制的规定:
public
private
protected
default(即成员前面不写任何访问限制标记)
派生类继承了基类的所有成员
- 派生类的方法可以访问基类的protected成员和public成员
- 如果派生类和基类在同一个包(见后)中,则派生类方法还可以访问基类的default成员