主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ハンドル互換クラス

基礎知識

この節では,以下の情報に関する知識を前提に説明を進めます。

重要な概念

ハンドル互換クラス——クラスがハンドルクラスでない場合でも,クラス階層のハンドルクラスに含めることができるクラス。

  • すべてのハンドルクラスは,ハンドル互換クラスです。

  • ハンドル互換クラスのすべてのスーパークラスもハンドル互換でなければなりません。

HandleCompatible——非ハンドルクラスをハンドル互換として定義するクラス属性。

ハンドル互換クラスを使用する場合

通常,MATLAB®クラスを他のクラスから派生させる場合,すべてのスーパークラスはハンドルクラスであるか,さもなければどのスーパークラスもハンドルクラスではありません。ただし,ハンドルサブクラスと非ハンドルサブクラスの両方で使用されるユーティリティがクラスにより提供される場合もあります。ハンドルクラスと非ハンドル クラスを組み合わせるのは適切でないため、そのユーティリティ クラスの作成者は、ユーティリティの 2 つの異なるバージョンを実装しなければなりません。

解決法は,ハンドル互換クラスを使用することです。ハンドル互換クラスは、スーパークラスのセットを形成する際にハンドル クラスと共に使用できるタイプのクラスです。HandleCompatibleクラス属性を使用して,非ハンドル互換クラスをハンドル互換として指定します。

classdef(HandleCompatible) MyClass...结束

ハンドル互換性規則

ハンドル互換クラス(つまり,HandleCompatible属性が真正的に設定されているクラス)は以下の規則に従います。

  • ハンドル互換クラスのすべてのスーパークラスもハンドル互換でなければなりません。

  • クラスがHandleCompatibility属性を明示的にに設定する場合,クラスのスーパークラスはハンドルクラスにはなりません。

  • クラスがHandleCompatible属性を明示的に設定せず,いかなるスーパークラスもハンドルである場合,すべてのスーパークラスはハンドル互換でなければなりません。

  • HandleCompatible属性は継承されません。

HandleCompatible属性を明示的に真正的に設定しないクラスは以下のとおりです。

  • いかなるスーパークラスもハンドルクラスである場合のハンドルクラス

  • スーパークラスがどれもハンドルクラスでない場合の値クラス

ハンドルオブジェクトの識別

オブジェクトがハンドルオブジェクトかどうかを判定するには,関数isaを使用します。

isa (obj,“处理”

関連するトピック