GeekBand Objective-C継承、マルチステート

1235 ワード

オブジェクトに直面する3つの基本的な特徴:パッケージencapsulation継承inheritanceマルチステートpolymorphism
1.継承
意味:親のメンバーを多重化します.タイプ抽象:子クラスを親として使用します(is-a).
OCでは単一継承のみがサポートされており、親が必要です.親が指定されていない場合は、NSObject(すべてのクラスのベースクラス)を指定できます.
継承メンバー:
インスタンス変数
shape->_data = 20; //            "->"

属性インスタンスメソッドクラスメソッド
テクニック:デフォルトのインスタンス変数はインプリメンテーションクラス内でのみアクセスできますが、外部がアクセスする場合は.インスタンス変数は、インタフェースヘッダファイルで@publicとして指定できます.
@interface Shape : NSObject {
        @public int _data;
}

2.マルチステート(運転時マルチステート)
override親を書き換える方法は、親メソッド名パラメータ名と同じ方法です.OC自体はメソッドのリロードをサポートしていません.
superはベースクラスを表し、サブクラスでベースクラスを呼び出す方法です.selfは現在のオブジェクトを表し、多態性を有する.
//            
Shape *rect = [[Rectangle alloc] init];
void process(Shape* shape){
      shape.no++;
      [shape draw]; //    
}

子クラスは親の初期化器を自動的に継承し、親の初期化器を書き換えることもできますが、親の初期化器を手動で呼び出す必要があります.子クラスは親クラスのアナライザを継承し、親クラスのアナライザメソッドを書き換えることもできます.子クラスのアナライザが実行されると、親クラスのアナライザ(後置呼び出し)が呼び出されます.アナライザは多態性を有する.
注意:親クラスのinitメソッドとdellocメソッドでサブクラスの書き換えメソッドを呼び出すのを避ける.親がinitメソッドを実行すると、サブクラスの書き換えメソッドが呼び出されますが、このメソッドで使用されるプロパティはまだ初期化されていません.親がdellocメソッドを実行するときにサブクラスの書き換えメソッドを呼び出すと、サブクラスは破棄されます.