つくる
さがす
ログイン
登録
ゲスト
ログインしていません
ログイン
登録
メニュー
通知
検索
単語帳をつくる
マニュアル
フィードバック
お問い合わせ
開発者を支援
サービス稼働状況
Ankilotについて
ログイン
通知はありません
ホーム
Java bronze -継承とポリモーフィズム-
Java bronze -継承とポリモーフィズム-
暗記
テスト
出力
違反報告
表示設定
お気に入り
フルスクリーン表示
Sasaki
2023年09月28日
カード
20
いいね
0
暗記
テスト
出力
広告
単語カード
設定
全面表示
サブクラスのインスタンス
サブクラスのインスタンスはスーパークラスの定義の上にサブクラスの差分を載せたものがサブクラスのインスタンスになる。インスタンス生成時はスーパークラスのインスタンスと差分のインスタンスの2つを結合し、生成する。
サブクラスのインスタンスが継承できないもの
コンストラクタ、privateなフィールドやメソッド
コンストラクタチェーンとは
サブクラスのコンストラクタがスーパークラスのコンストラクタを呼び出すこと。このとき呼び出されるのは、引数なしのスーパークラスのコンストラクタである。
コンストラクタの呼び出し順序
コンストラクタ内で同クラスの他のコンストラクタを呼び出す際には、必ずコンストラクタブロックの先頭行に記述が必要。従ってthisとsuperを同一コンストラクタ内に記述する場合、super→thisの順序はコンパイルエラーとなる
メソッドのオーバーライドが成り立つ条件
メソッドのシグニチャがスーパークラスと同一、戻り値の型がスーパークラスのメソッドと同一か、メソッドのアクセス制御がスーパークラスと同じか、それよりも緩い
オーバーライドしたメソッドのthrow節のルール
オーバーライドしているメソッドはthrows節を持たなくてもよい、もし持つのであればオーバライドしたメソッドに列挙されている例外の型が、スーパークラスのメソッドに列挙されている例外と同じ型かそのサブタイプであること
インタフェースに定義するフィールドの修飾子
public, static, finalの3つ。インタフェースに定義するフィールドはコンパイラによって暗黙的にこの3つで修飾される。
インタフェースに定義できる2点
インタフェースに定義できるの定数フィールドと抽象メソッドのみ。抽象メソッドは情報隠蔽のうち公開部分をインタフェースとして定めるため、publicが必須。具体的な処理を持たないメソッドは、具体的な処理を持つメソッドと区別するためにもabstractで修飾が必要。
インタフェースの特徴
具象メソッドは定義できない、クラスはインタフェースを多重実現できる、インタフェースは既存インタフェースを継承可能かつ多重継承可能
抽象クラスの特徴
抽象クラスはクラスとインタフェース両方の性質を持ったクラス。インスタンス化不可。抽象クラスに定義したメソッドは抽象クラスを継承する具象クラスが実装、抽象クラスに定義するメソッドはabstractで修飾しないとコンパイルエラーになる。
変数のアップキャストとダウンキャスト
変数を実現関係や継承関係にある上位の型に変換することをアップキャスト、下位の型に変換することをダウンキャストという。コンパイラはポリモーフィズムにより互換性のある型であるか否かを確認し、互換性があると判断すれば自動的にアップキャストする機能がある。一方、ダウンキャストは自動的に行われない。スーパークラスにはサブクラスのような差分の定義がないため、互換性がなくコンパイルエラーとなる。
パッケージが提供する機能
名前空間を提供し、名前の衝突を避ける、アクセス修飾子と組み合わせてアクセス制御機能を提供する、クラスの分類を可能にする。
インポート宣言
同一パッケージに所属するクラスはインポート宣言を省略可能、java.langパッケージに所属するクラスはインポート宣言を省略可能(頻繁に利用するため)
オーバーロードしたコンストラクタの呼び出し
オーバーロードしたコンストラクタの呼び出しにはthis()を使う。this()はコンストラクタブロックの先頭行でのみ使用可能。
サブクラスのインスタンスがスーパークラスから引き継げないもの
①コンストラクタ、②privateなフィールドやメソッド
スーパークラスの要素と同じ名前で定義できるサブクラスの要素
フィールド、メソッド。※コンストラクタはメソッドではあるが定義不可
例外を投げる際のオーバーライド
例外を投げるメソッド(例:メソッド名 throws ~Exception、~~Exception)をオーバーライドする際、メソッド名 throws Exceptionでまとめられる。
ポリモーフィズムにおける型変換のルール
2つのクラスには継承関係が必須。
オーバーライドのアノテーションについて
親子クラスでメソッドのシグネチャが同一の場合において子クラスに@Overrideが無い場合、メソッドはオーバーライドされず各親子クラスに同一のメソッドが存在することになる。
コンストラクタ呼び出しにおけるsuperとthisの併用
サブクラスのコンストラクタ内でsuperとthisの併用したコンストラクタの呼び出しは不可。superやthisはコンストラクタ内の先頭行に記述が必須なので、コンストラクタ呼び出し時は重複も不可
広告
コメント
コメントを送信
単語帳を共有
Twitter
LINE
はてな
アプリ
QRコード
URLコピー
キャンセル
表示設定
文字の色
デフォルト
白
シルバー
グレー
黒
赤
オレンジ
黄
黄緑
緑
水
青
紫
ピンク
文字の太さ
デフォルト
太字
文字の大きさ
デフォルトの文字サイズに加算・減算します。
px
チェック済を非表示
暗記でチェックをつけたカードを非表示にします。
カードの一部を隠す
カードの一部を指定して隠します。
表の文字
表のヒント
表の画像
裏の文字
裏のヒント
裏の画像
設定を適用する
つくる
さがす
ホーム
リスト
メニュー