作者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
1F:推 etman395:没写注解要推好久..晚点来看1D 12/19 15:02
2F:推 psalter:写Swing的Listener就常有机会用inner class 12/19 18:47
3F:推 carlcarl:嗯嗯 我觉得listener用这个比较方便 12/19 20:43
4F:推 killeryagami:this是指此物件吗 ? 会print出什麽 @@? 12/21 03:39
5F:推 sunneo:我猜应该会叫用到隐藏的 .toString 印出类别名称 12/21 11:57