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个根节点,即天体、有环、气态。