抽象类和类成员

抽象类

抽象类是用于描述的功能所共有的一组类是有用的,但需要每个类中是唯一的实施方式。

抽象类术语

一个抽象类用作基础(即,一个超类)为一组相关的子类。抽象类可以定义抽象属性和子类实现的方法。每个子类可以实现在支持其特定要求的方式具体的属性和方法。万博1manbetx

实现一个具体子类

子类必须实现所有继承的抽象属性和方法成为一个具体的类。否则,子类本身是一个抽象类。

MATLAB®不强迫子类实现具有相同签名或属性的具体方法。

抽象类:

  • 可以定义不是抽象的属性和方法

  • 通过对通过继承他们的混凝土构件

  • 不需要定义任何抽象成员

声明类抽象

一类是抽象的,当它宣布:

  • 抽象类属性

  • 抽象方法

  • 抽象属性

如果一个抽象类的子类并不适用于所有继承的抽象方法或属性定义具体的实现,这也是抽象的。

抽象类

声明一个类为抽象classdef声明:

classdef(摘要)AbsClass...结束

对于声明中的类抽象类属性:

  • 具体的子类必须重新定义声明为抽象的任何属性或方法。

  • 抽象类不需要定义任何抽象方法或属性。

当你定义的任何抽象方法或属性,MATLAB自动设置类抽象属性真正

抽象方法

定义一个抽象方法:

方法(摘要)abstMethod(OBJ)结束

对于申报方法抽象方法属性:

  • 不要使用功能...结束块,以限定一个抽象方法,只使用方法签名。

  • 抽象方法必须在抽象类没有实现。

  • 具体的子类不需要支持相同数量的输入和输出参数,并不需要使用相同的参数名称。万博1manbetx然而,子类实现自己版本的方法时一般采用相同的签名。

  • 抽象方法不能定义参数块。

摘要属性

定义抽象属性:

性能(摘要)AbsProp结束

对于声明的属性抽象property属性:

  • 具体的子类必须重新定义,而不抽象属性抽象属性。

  • 具体的子类必须使用的相同的值SetAccessGetAccess的属性作为在抽象超使用的那些属性。

  • 抽象属性不能定义访问方法,不能指定初始值。定义具体属性可以创建访问方法和指定的初始值的子类。

有关访问方法的详细信息,请参阅属性访问方法

确定如果一个类是抽象

确定一类是通过查询摘要抽象物业公司meta.class目的。例如,AbsClass定义了两个抽象方法:

classdefAbsClass方法(摘要)结果= absMethodOne(OBJ)输出= absMethodTwo(OBJ)结束结束

使用的逻辑值meta.class抽象属性,以确定是否是一个抽象类:

?MC = AbsClass;如果〜mc.Abstract%不是一个抽象类结束

显示摘要成员名称

使用meta.abstractDetails函数来显示抽象属性或方法和限定类的名称的名称:

meta.abstractDetails('AbsClass');
在AbsClass定义在AbsClass absMethodOne%定义absMethodTwo%:类AbsClass抽象方法

查找继承的抽象属性和方法

meta.abstractDetails函数返回任何继承的抽象属性或方法,你有没有在你的子类实现的名称和定义类。如果你想在子类是具体的,必须确定什么抽象成员的子类继承使用此功能。

例如,假设您创建的一个子类AbsClass即在前一节中定义的类。在这种情况下,子类仅实现的抽象方法一个由下式定义AbsClass

classdefSubAbsClass %未实现absMethodOne%定义为抽象AbsClass方法功能OUT = absMethodTwo(OBJ)...结束结束结束

确定是否使用实现所有继承的类成员meta.abstractDetails

meta.abstractDetails(?SubAbsClass)
类SubAbsClass抽象方法:在AbsClass定义absMethodOne%

SubAbsClass类是抽象的,因为它没有实现absMethodOne方法定义在AbsClass

?MSUB = SubAbsClass;msub.Abstract
ANS = 1

如果要实现定义的两种方法AbsClass,子类变得具体。

相关话题