2014年02月02日
JavaEEの前に復習をしてみる その12 継承を使ってみる。
こんばんは。Javaやりたい!と会社でことあるごとに呟いているshadeです。
ちょっと、サーブレットやJSPを触っていましたが、また本来のJavaに戻ってきました。
タイトルの意味がなくなってきましたが、ゆるく生暖かく見守ってください。
さて、Java SE Goldホルダーの私ですが、プログラミングスキルが低く、
半年も離れていたらすっかり忘れてしまいましたので、思い出しながら頑張ります。
今回は、継承です。
継承といえば、他のクラスの変数の値や、メソッドの処理をあたかも
自分が持っているかのように使える技術です。(そのほかにもたくさんありますが)
とりあえず、浅く思い出すために、またRPGワールドでやっていきます。
戦士さん…攻撃力が高いのが自慢です。
しかし、戦士である前に人間です。魔法使いさんも、勇者さんも人間です。
ここでは、戦士さんが、人間というクラスを継承する例を使ってみます。
まず、Humanというクラスを作ってみました。
メインメソッドを持っていないので、単体では実行はできません。
ただ、jobとattackpointの値を受け取って、コンソールに出力するだけのクラスです。
package test;
public class Human {
String job= "" ;
int attackPoint ;
public void attack(String job, int attackPoint){
System. out .println(job+"は持っている武器で" +attackPoint+ "のダメージを与えた" );
}
}
続いて、戦士を表すSolidierというクラスを作ってみました。
extends Human という記述で、人間クラスを継承しています。
Soldierクラスは、attackというメソッドを持っていませんが、
Humanクラスを継承することによって、attackというメソッドを呼び出すことができます。
package test;
public class Soldier extends Human {
private static String job= "戦士";
private static int attackPoint =10;
public static void main(String[]args){
Soldier sld = new Soldier();
sld.attack( job ,attackPoint );
}
}
結果は、以下の通り。
「戦士は持っている武器で10のダメージを与えた」
よって、魔法使いや勇者もHumanを継承することによって、attackメソッドを呼び出して攻撃ができます。
うっかり、以下のようなGoblinクラスを継承すると、
package test;
public class Goblin {
int attackPoint ;
public void attack(String job, int attackPoint){
System. out .println(job+"は噛みついて" +attackPoint+ "のダメージを与えた" );
}
}
「戦士は噛みついて10のダメージを与えた」
のように、継承した先のattackの内容に変わってしまいます。
人型の戦士ではなく、ゴブリン型の戦士になったので、もはや敵キャラになってしまいました。
継承という技術は便利で、これは初歩中の初歩です。
自分が作ったクラスを継承するのはもちろん、CoreAPIのような既存のクラスを継承して作業をすることもできます。
むしろ、実務ではそういう技術が必要なので、CoreAPIを普段から読んでおくことが必要なんです
ちょっと、サーブレットやJSPを触っていましたが、また本来のJavaに戻ってきました。
タイトルの意味がなくなってきましたが、ゆるく生暖かく見守ってください。
さて、Java SE Goldホルダーの私ですが、プログラミングスキルが低く、
半年も離れていたらすっかり忘れてしまいましたので、思い出しながら頑張ります。
今回は、継承です。
継承といえば、他のクラスの変数の値や、メソッドの処理をあたかも
自分が持っているかのように使える技術です。(そのほかにもたくさんありますが)
とりあえず、浅く思い出すために、またRPGワールドでやっていきます。
戦士さん…攻撃力が高いのが自慢です。
しかし、戦士である前に人間です。魔法使いさんも、勇者さんも人間です。
ここでは、戦士さんが、人間というクラスを継承する例を使ってみます。
まず、Humanというクラスを作ってみました。
メインメソッドを持っていないので、単体では実行はできません。
ただ、jobとattackpointの値を受け取って、コンソールに出力するだけのクラスです。
package test;
public class Human {
String job= "" ;
int attackPoint ;
public void attack(String job, int attackPoint){
System. out .println(job+"は持っている武器で" +attackPoint+ "のダメージを与えた" );
}
}
続いて、戦士を表すSolidierというクラスを作ってみました。
extends Human という記述で、人間クラスを継承しています。
Soldierクラスは、attackというメソッドを持っていませんが、
Humanクラスを継承することによって、attackというメソッドを呼び出すことができます。
package test;
public class Soldier extends Human {
private static String job= "戦士";
private static int attackPoint =10;
public static void main(String[]args){
Soldier sld = new Soldier();
sld.attack( job ,attackPoint );
}
}
結果は、以下の通り。
「戦士は持っている武器で10のダメージを与えた」
よって、魔法使いや勇者もHumanを継承することによって、attackメソッドを呼び出して攻撃ができます。
うっかり、以下のようなGoblinクラスを継承すると、
package test;
public class Goblin {
int attackPoint ;
public void attack(String job, int attackPoint){
System. out .println(job+"は噛みついて" +attackPoint+ "のダメージを与えた" );
}
}
「戦士は噛みついて10のダメージを与えた」
のように、継承した先のattackの内容に変わってしまいます。
人型の戦士ではなく、ゴブリン型の戦士になったので、もはや敵キャラになってしまいました。
継承という技術は便利で、これは初歩中の初歩です。
自分が作ったクラスを継承するのはもちろん、CoreAPIのような既存のクラスを継承して作業をすることもできます。
むしろ、実務ではそういう技術が必要なので、CoreAPIを普段から読んでおくことが必要なんです
【Javaの最新記事】
この記事へのコメント
いえいえ。教えてもらってありがとうございます。
いつの間にか直っていたようです。
おはようございます病床より Habitat ですっ
なんか、粗探ししたみたいなコメになったんで、ごめんね
さしおり、重篤な問題じゃないからそこまで気にしなくてもいいんでしょうけどね
新しかったのが、新鮮で夢中でバチバチクリックしまくっちゃったww
おはようございます。
はい、自分でもプチリニューアルしてみました。
ネットワークカテゴリのところ、
そうなんですよ。変にキャッシュが残っていたり、新しいコメントが表示されない箇所があるんですよね。
そこまでは、カスタマイズできないので、ファンブログのバグ的なものだと思います。
とても残念です。
こんにちは Habitat です
うわーPC版のタトイル周りがかっこよくなってる
上部のカテゴリメニューもいい感じで、どんどん進化してますね
私もそろそろ、ちょっと使い勝手も考えなきゃなぁ
あっあと、気づいた点で・・
トップのカテゴリでネットワークたたいた時だけ、
タイトル下の(資格取得履歴)情報表示と、
カテゴリアーカイブのjava のカウントが変わるみたい