作者TonyQ (骨頭)
看板java
標題Re: 請問一下關於建構子的覆載
時間Wed Mar 8 11:28:07 2006
※ 引述《[email protected] (不可以)》之銘言:
: 我照著書上的範例打的程式:
: public class Animal
: {
: private int legs;
: public Animal()
: {
: setLegs(4);
: }
: public Animal(int l)
: {
: setLegs(l);
: }
: public void eat()
: {
: System.out.println("Eating...");
: }
: public void move()
: {
: System.out.println("Moving...");
: }
: public void setLegs(int l)
: {
: if(l!=0 && l!=2 && l!=4)
: {
: System.out.println("Wrong number of legs!");
: return;
: }
: legs=l;
: }
: public int getLegs()
: {
: return legs;
: }
: }
跑一次流程就知道了
: public class Zoo
: {
: public static void main(String argv[])
: {
: Animal animal1=new Animal();
執行Animal()
=> i==4 故不符合(i!=0&&i!=2&&i!=4)的敘述
=>
animal.legs=4
: Animal animal2=new Animal();
執行Animal() => setLegs(4)
=> i==4 故不符合(i!=0&&i!=2&&i!=4)的敘述
=>
anima2.legs=4
: Animal animal3=new Animal(10);
執行Animal(int k) => setLegs(k)
=> i==10 故符合(i!=0&&i!=2&&i!=4)的敘述
=>
print error! =>
animal3.legs 沒有被給值 所以是0
: animal1.setLegs(3);
=> i==3 故符合 敘述
=>
print error! =>
animal1.legs維持原樣 (4)
: animal2.setLegs(2);
=> i==2 故不符合 敘述 =>
animal2.legs=2
: System.out.println("animal1 has "+animal1.getLegs()+"legs.");
4
: System.out.println("animal2 has "+animal2.getLegs()+"legs.");
2
: System.out.println("animal3 has "+animal3.getLegs()+"legs.");
0
: }
: }
: 執行結果是
: Wrong number of legs!
: Wrong number of legs!
: animal1 has 4 legs.
: animal1 has 2 legs.
^
: animal1 has 0 legs.
^
這是不是打錯字?? 怎麼都是1 跟你上面的System.out.println就不一樣了-.-
: 跟書上的結果一樣,但是書上卻說只有animal2的legs數有設定成功,所以顯示是2
: 其餘animal1和animal3的legs都是0
: 跟run出來的結果為什麼不一樣呢?
: 請各位大大解答一下,謝謝!
流程會說話‧ :)
--
String temp="relax"; | Life just like programing
while(buringlife) String.forgot(temp); | to be right or wrong
while(sleeping) brain.setMemoryOut(); | need not to say
stack.push(life.running); | the complier will
stack.push(scouting.buck()); | answer your life
stack.push(bowling.pratice()); | Bone
everything
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.240.58