Java は厳密に型指定された言語です。
標準変換と自動プロモーションはプリミティブ型に適用されます。
タイプの互換性は厳密に適用されます。
通常、あるクラスの参照変数は別のクラスのオブジェクトを参照できません。
クラス X とクラス Y は構造的に同じであっても、型が異なるため、X の参照を Y のオブジェクトに代入することはできません。
一般に、オブジェクト参照変数はその型のオブジェクトのみを参照できます。
型の強制の例外は、スーパークラスの参照変数がそのスーパークラスから派生したサブクラスのオブジェクトを参照できることです。
Y は X から派生しているため、x2 は Y のオブジェクトへの参照を受け取ることができます。
アクセスできるメンバーは、参照変数の型ではなく、参照変数の型によって決まります。
サブクラス オブジェクトへの参照がスーパークラス変数に割り当てられている場合、スーパークラスで定義されたメンバーにのみアクセスできます。
この例では、クラス X はサブクラスによって追加されたメンバーを認識していないため、x2 は Y のメンバー b にアクセスできません。
スーパークラス変数に割り当てられたサブクラス参照は、特にクラス階層でコンストラクターを呼び出す場合に一般的です。
サブクラスは、スーパークラスからオブジェクトをパラメータとして受け取るコンストラクターの恩恵を受けることができ、オブジェクトのコピーを作成できます。
このプログラムでは、t2 は t1 から構築されるため、同一です。
この三角形ビルダーの注意点:
// あるオブジェクトを別のオブジェクトから構築します。
Triangle(Triangle ob) {
スーパー(ob); // オブジェクトを TwoDShape
のコンストラクターに渡します
スタイル = ob.style;
}
Triangle 型のオブジェクトを受け取り、それを (スーパー経由で) この TwoDShape コンストラクターに渡します:
// あるオブジェクトを別のオブジェクトから構築します。
TwoDShape(TwoDShape ob) {
幅 = ob.width;
高さ = ob.height;
}
TwoDShape() コンストラクターは、TwoDShape.
Triangle() サブクラスのコンストラクターは、Triangle.
これが機能するのは、TwoDShape などのスーパークラスからの参照は、Triangle.
派生クラスのオブジェクトからスーパークラスのコンストラクターに参照を渡すことができます。
スーパークラス コンストラクター TwoDShape() は、Triangle サブクラスの追加メンバーに関係なく、TwoDShape クラスに属するメンバーのみを初期化します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3