主要内容

类的层次结构-概念

分类

将类组织到层次结构中有利于代码的重用和解决方案的重用,以设计已经解决的问题。金宝搏官方网站您可以将类层次结构看作是集—超集(称为超类基类),以及子集(称为子类派生类).例如,下图显示了如何用类表示员工数据库。

显示员工类别的维恩图和阶级图

层次结构的根是员工类。它包含应用于所有员工集合的数据和操作。包含在雇员集合中的子集,其成员虽然仍然是雇员,但也是更具体地定义雇员类型的集合的成员。像子类TestEngineer是这些子集的例子。

发展抽象

类是现实世界概念或事物的表示。在设计一个类时,要对类所代表的内容进行抽象。考虑一个员工的抽象,以及对于该类的预期用途,员工的基本方面是什么。姓名、地址和部门可以是所有员工的共同信息。

在设计类时,抽象只包含那些必要的元素。例如,员工的头发颜色和鞋码肯定是员工的特征,但可能与该员工类的设计无关。他们的销售区域只与一些员工相关,所以这个特征属于一个子类。

类层次结构的设计

在设计类系统时,将公共数据和功能放在超类中,然后使用它派生子类。子类继承父类的数据和功能,并仅定义对其特定目的惟一的方面。这种方法具有以下优点:

  • 避免重复所有类共用的代码。

  • 在不修改超类或影响其他子类的情况下随时添加或更改子类。

  • 如果父类发生了变化(例如,所有员工都分配了一个编号),那么子类将自动获得这些变化。

父类和子类行为

子类对象的行为类似于父类的对象,因为它们是父类的专门化。这一事实促进了相关类的开发,这些类的行为相似,但实现方式不同。

子类对象是超类对象

你通常可以用这样的语句来描述子类的对象和父类的对象之间的关系:

子类是一个超类。例如:工程师是员工。

这种关系意味着属于子类的对象具有与超类相同的属性、方法和事件。子类对象也有子类定义的任何新特性。方法测试此关系isa函数。

像对待超类对象一样对待子类对象

可以将子类对象传递给超类方法,但只能访问超类定义的属性。此行为使您可以在不影响超类的情况下修改子类。

关于父类和子类行为,有两点需要记住:

  • 父类中定义的方法可以操作子类对象。

  • 子类中定义的方法不能操作超类对象。

因此,你可以治疗工程师对象与其他对象一样员工对象,但是员工对象不能传递给工程师对象。

对象替换的限制

MATLAB®根据对象最特定的类确定对象的类。因此,一个工程师对象为工程师,而它也是一个员工对象,如使用isa显示功能。

通常,MATLAB不允许创建包含父类和子类对象的混合数组,因为数组只能属于一个类。如果您试图连接不同类的对象,MATLAB将寻找由次要类定义的转换器方法

看到连接不同类的对象获取更多信息。

看到matlab.mixin.Heterogeneous有关定义异构类层次结构的信息。

看到对象的转换器有关定义转换器方法的信息。

实现和接口继承

MATLAB类既支持从超类继承金宝app实现的方法,也支持继承超类中抽象方法定义的接口。

实现继承允许子类重用代码。例如,员工类可以有一个submitStatus方法员工子类可以使用。子类可以扩展继承的方法以提供专门的功能,同时重用公共方面。看到修改继承的方法有关此过程的更多信息。

接口继承在以下情况下很有用:

  • 您希望一组类提供一个公共接口。

  • 子类创建方法和属性的专用实现。

使用抽象类作为超类创建接口。该类定义了必须在子类中实现的方法和属性,但不提供实现。

子类必须提供它们自己的超类抽象成员的实现。要创建接口,请将方法和属性定义为抽象的摘要属性。看到抽象类和类成员获取更多信息和示例。

相关的话题