Calendar |
Recent Entry |
Recent Comment |
Category |
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
はんいちって読んでw
ネタは昨日書いたからな~。
昨日、メンテナンスまであと数十分って感じで急いで書いた。
いや、打ったの方が正しいのか?
ふと・・・・。そういや、聖剣伝説が発売だネェ~。
・・・・やる暇あるのかを考えてみた・・・・。
なくねぇ?まあ、あったとしても最初の方で後半、もっぱら仕事なんだが・・・どうする自分!(ぁ
まあ、年明けリャ~どうにかにゃんべ~(ぁ
ネタは昨日書いたからな~。
昨日、メンテナンスまであと数十分って感じで急いで書いた。
いや、打ったの方が正しいのか?
ふと・・・・。そういや、聖剣伝説が発売だネェ~。
・・・・やる暇あるのかを考えてみた・・・・。
なくねぇ?まあ、あったとしても最初の方で後半、もっぱら仕事なんだが・・・どうする自分!(ぁ
まあ、年明けリャ~どうにかにゃんべ~(ぁ
◆メソッドのオーバーライドとアクセス修飾子protected
特定のサブクラスで同一のメソッドを再定義する。
スーパークラスメソッドにある定義をサブクラスで再度定義する
◆オーバーライドの使用方法
スーパークラス内に定義されているAPI(「戻り値」「メソッド名」「パラメータ宣言リスト」の組み合わせ)が完全に一致するメソッドをサブクラスに定義する。
◆アクセス修飾子protected
サブクラスと同じパッケージ内のクラスから可能
スーパークラスの定義
private データ型 参照変数名;
protectedにするとこの記述でもコンパイルエラーにならずに済む
public データ型 get+メソッド名()
{
return this.メソッド名;
}
サブクラスの定義
public データ型 get+メソッド名()
{
return this.メソッド名[やりたいちょっとした処理など今回は-1925];
}
〇privateだと同じクラス内(スーパークラスならそれだけ)からしか呼び出すことが出来ない。
〇継承はされているのが、privateだとアクセスできないがprotectedだとアクセスが可能となる。
◆キーワードsuper
if(条件式)
{
return super get + メソッド名(); //スーパークラスにあるメソッドを呼び出す
}
else
{
return this.get + メソッド名(); //自分のクラスにあるメソッドを呼び出す。
}
◆オーバーライドとオーバーロード
◆継承とオーバーライドに関する制限
クラス宣言の際にキーワードfinalが指定されたクラスを継承したサブクラスには定義できない
※スーパークラスでfinal指定をするとサブクラスではオーバーライドの定義をすることが出来ない
サブクラスでfinalをするとあまり意味がないがサブクラスがスーパークラスの扱いにすると必要になる
スーパークラス
↑ ↑
サブクラス サブクラス//finalを指定したクラス有り
↑ ↑
サブクラス サブクラス//finalで指定したクラスをオーバーライドすることが出来ない
◆is-a関連
サブクラス is a kind of スーパークラス(サブクラスはスーパークラスの一種である)
◆スーパークラス型の参照変数へサブクラスが他のインスタンスオブジェクトのアドレスを代入する形式
スーパークラス名 参照変数名 = new サブクラス名(パラメータ);
サブクラス型のインスタンスオブジェクトの生成
スーパークラス方にサブクラス方を代入させることが出来るが、アドレスだけ
インスタンスオブジェクトは個々のサブクラス型。
スーパークラス型 参照変数 = new サブクラス型();
参照変数.get + サブクラスメソッド;
スーパークラス型で呼び出すためサブクラス独自のメソッドは呼び出せずにコンパイルエラーとなる
※サブクラスで宣言されたインスタンスフィールドへのアクセス制限が勝手にかけられるがサブクラスインスタンスオブジェクトは散在している。
((サブクラス型)参照変数).get + サブクラスメソッド();
ダウンキャスト スーパークラス型の参照変数をサブクラス型にキャスト変換
スーパークラスから格下げと言う意味で
◆演算子 instanceof
指定したクラス名とインスタンスオブジェクトのデータ型を比較し一致していたらtureそうでない場合はfalseを解とする。
参照変数名 instanceof クラス名
戻り値 bolean型
特定のサブクラスで同一のメソッドを再定義する。
スーパークラスメソッドにある定義をサブクラスで再度定義する
◆オーバーライドの使用方法
スーパークラス内に定義されているAPI(「戻り値」「メソッド名」「パラメータ宣言リスト」の組み合わせ)が完全に一致するメソッドをサブクラスに定義する。
◆アクセス修飾子protected
サブクラスと同じパッケージ内のクラスから可能
スーパークラスの定義
private データ型 参照変数名;
protectedにするとこの記述でもコンパイルエラーにならずに済む
public データ型 get+メソッド名()
{
return this.メソッド名;
}
サブクラスの定義
public データ型 get+メソッド名()
{
return this.メソッド名[やりたいちょっとした処理など今回は-1925];
}
〇privateだと同じクラス内(スーパークラスならそれだけ)からしか呼び出すことが出来ない。
〇継承はされているのが、privateだとアクセスできないがprotectedだとアクセスが可能となる。
アクセス修飾子と UML記号 | 概要 | アクセ シビリティ | |
---|---|---|---|
private | - | 同一クラスのメンバーからのみアクセス可能 | 弱い(低い) ↑ ↑ ↑ ↓ ↓ ↓ 強い(高い) |
無指定 | ~ | 同一パッケージで定義されたクラスのメンバーからアクセス可能 | |
protected | # | サブクラスと 同一パッケージで定義されたクラスのメンバーからアクセス可能 | |
public | + | 全てのクラスのメンバーからアクセス可能 |
◆キーワードsuper
if(条件式)
{
return super get + メソッド名(); //スーパークラスにあるメソッドを呼び出す
}
else
{
return this.get + メソッド名(); //自分のクラスにあるメソッドを呼び出す。
}
◆オーバーライドとオーバーロード
概要 | 目的 | 場所 | |
---|---|---|---|
オーバーライド 同じ名前で内容が違う | API(戻り値のデータ型とシグニチャー)が一致するメソッドを定義すること | スーパークラスから継承したメソッドをサブクラス独自の処理内容に再定義する | サブクラス |
オーバーロード 違うAPIだけど内容は同じことをする | 同じ名前でパラメータ変数宣言がことなるメソッドを定義すること | 同じ名前処理内容のメソッドに異なるパラメータでバリエーションを持たせる | サブクラス または 同一クラス |
◆継承とオーバーライドに関する制限
クラス宣言の際にキーワードfinalが指定されたクラスを継承したサブクラスには定義できない
※スーパークラスでfinal指定をするとサブクラスではオーバーライドの定義をすることが出来ない
サブクラスでfinalをするとあまり意味がないがサブクラスがスーパークラスの扱いにすると必要になる
スーパークラス
↑ ↑
サブクラス サブクラス//finalを指定したクラス有り
↑ ↑
サブクラス サブクラス//finalで指定したクラスをオーバーライドすることが出来ない
◆is-a関連
サブクラス is a kind of スーパークラス(サブクラスはスーパークラスの一種である)
◆スーパークラス型の参照変数へサブクラスが他のインスタンスオブジェクトのアドレスを代入する形式
スーパークラス名 参照変数名 = new サブクラス名(パラメータ);
サブクラス型のインスタンスオブジェクトの生成
スーパークラス方にサブクラス方を代入させることが出来るが、アドレスだけ
インスタンスオブジェクトは個々のサブクラス型。
スーパークラス型 参照変数 = new サブクラス型();
参照変数.get + サブクラスメソッド;
スーパークラス型で呼び出すためサブクラス独自のメソッドは呼び出せずにコンパイルエラーとなる
※サブクラスで宣言されたインスタンスフィールドへのアクセス制限が勝手にかけられるがサブクラスインスタンスオブジェクトは散在している。
((サブクラス型)参照変数).get + サブクラスメソッド();
ダウンキャスト スーパークラス型の参照変数をサブクラス型にキャスト変換
スーパークラスから格下げと言う意味で
◆演算子 instanceof
指定したクラス名とインスタンスオブジェクトのデータ型を比較し一致していたらtureそうでない場合はfalseを解とする。
参照変数名 instanceof クラス名
戻り値 bolean型
PR
コメント
|
トラックバック
|
この記事にトラックバックする →
ブログ内検索
|