作者godfat (godfat 真常)
看板java
標題Re: [問題] 內部類別的用途?
時間Fri Dec 19 14:07:19 2008
: 推 etman395:很清楚~要是能寫上個範例程式就更清楚了 1D 12/19 13
: → adrianshum:太貪心了 =_= 12/19 14
隨手寫的,就不解釋了。
godfat ~/p/t/java> java Strategy
Monster@4ed9ff hp after walking: 9
Monster@4ed9ff hp after jumping: 8
Monster@4ed9ff got mad.
Monster@4ed9ff hp after walking: 6
Monster@4ed9ff hp after jumping: 3
godfat ~/p/t/java> cat Strategy.java
import static java.lang.System.out;
class Monster{
public Monster(){
hp_ = 10;
mood_ = new Happy();
}
public void walk(){
mood_.walk();
out.printf("%s hp after walking: %d\n", this, hp_);
}
public void jump(){
mood_.jump();
out.printf("%s hp after jumping: %d\n", this, hp_);
}
public void got_mad(){
mood_ = new Mad();
out.printf("%s got mad.\n", this);
}
protected abstract class Mood{
abstract void walk();
void jump(){ hp_ -= 1; }
};
private class Mad extends Mood{
void walk(){ hp_ -= 2; }
void jump(){ hp_ -= 2; super.jump(); }
}
private class Happy extends Mood{
void walk(){ hp_ -= 1; }
}
private Mood mood_;
private int hp_;
}
class Strategy{
public static void main(String[] args){
Monster m = new Monster();
m.walk(); m.jump();
m.got_mad();
m.walk(); m.jump();
}
}
--
Hear me exalted spirits. Hear me, be you gods or devils, ye who hold
dominion here:
I am a wizard without a home. I am a wonderer seeking refuge.
Sacrifice
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推 etman395:沒寫註解要推好久..晚點來看1D 12/19 15:02
推 psalter:寫Swing的Listener就常有機會用inner class 12/19 18:47
推 carlcarl:嗯嗯 我覺得listener用這個比較方便 12/19 20:43
推 killeryagami:this是指此物件嗎 ? 會print出什麼 @@? 12/21 03:39
推 sunneo:我猜應該會叫用到隱藏的 .toString 印出類別名稱 12/21 11:57