Object Oriented Programming in MATLAB - sjhstone/MATLAB_Develop_Tips GitHub Wiki
Object-Oriented Programming in MATLAB
MATLAB中的面向对象编程
Features Supported in MATLAB
Source: Object-Oriented Programming in MATLAB | Master Class with Loren Shure
- Class Definitions
- Methods
- Properties
- Events and listeners
- Overloaded operators
- Protected access
- Handle (reference) classes
- Destructors
- Classes defined in single files
- Static methods
- Property validation
- Namespaces
- Object arrays
- Custom indexing
Mixin / Mix-In:混入/多态继承
Based on Mix It Up and Mix It In
你希望将天体作为父类(superclass,又称基类,base class),希望通过面向对象的子类(subclass)定义来表示各种天体实例(instance),如月球等卫星、土星等行星、太阳等恒星,以及彗星等。
若不使用Mixin风格,你可能需要构造一个非常深的继承链:
土星 < 气态有环行星 < 有环行星 < 行星 < 球形天体 < 天体
而若使用Mixin风格,你会首先构造一些抽象类(abstract class),所谓抽象类一般是为了其子类服务的,抽象类中可以定义一系列子类通用的方法接口(method)和属性(property/attribute/类域field),而不会有其单独的类实例(class instance)。
抽象
有环
(属性:环径
)抽象
气态
(属性:气体种类[]
)抽象
天体
(属性:质量
)抽象
球形
(属性:直径
)抽象
行星 < 天体
(属性:卫星[]
)
定义了上述抽象类之后,土星
的类继承定义可以变为
土星 < 有环 & 气态 & 行星
,注意行星 < 天体
如果将继承关系可视化为树结构,深继承链只有1个根节点,即天体
,而使用Mixin风格后,会有3个根节点,即天体
、有环
、气态
。