2015-12-17 4 views
1

Мое назначение этого (я должен использовать наследование):MonetaryCoin наследство

Проектирования и реализацию класса под названием MonetaryCoin, который является производным от класса Coin. Сохраните значение в денежной монете, которое представляет его значение, и добавьте метод, который возвращает его значение. Создайте класс ClientTester , чтобы создать экземпляр и вычислить сумму нескольких различных объектов MonetaryCoin. Например, Dime, Quarter и HalfDollar имеют общую стоимость 85 центов. Монета наследует способность своего родителя перевернуть.

Мой класс `Монета

import java.util.Random; 

public class Coin 
{ 
    private final int HEADS = 0; 
    private final int TAILS = 1; 
    private int face; 
    // Constructor... sets up the coin by flipping it initially 
    public Coin() 
    { 
     flip(); 
    } 

    // flips the coin by randomly choosing a face value 
    public void flip() 
    { 
     face = (int)(Math.random()*2); //random numbers 0 or 1 
    } 

    // returns true if the current face of the coin is head 

    public boolean isHeads() 
    { 
     return (face == HEADS); 
    } 

    // returns the current face of the coin as a string 

    public String toString() 
    { 
     String faceName; 
     if(face==HEADS) 
     { faceName = "Heads"; } 
     else 
     { faceName = "Tails"; } 
     return faceName; 
    } 
} 

Мои MonetaryCoinClass является

public class MonetaryCoin extends Coin 
{ 

    private int value; 

    public MonetaryCoin(int value) 
    { 
     this.value = value; 
    } 

    public int getValue() 
    { 
     return this.value; 
    } 

    public void setValue(int value) 
    { 
     this.value = value; 
    } 

    public int add(MonetaryCoin [] mc) 
    { 
     if (mc.length >= 0) 
      return -1; 
     int total = this.value; 
     for (int i = 0; i < mc.length; i++) 
     { 
      total += mc[i].getValue(); 
     } 
     return total; 
    } 
} 

И, наконец, мой клиент

public class Client 
{ 
    public static void main() 
    { 
     MonetaryCoin mc1 = new MonetaryCoin(25);    
     MonetaryCoin mc2 = new MonetaryCoin(13);  
     MonetaryCoin mc3 = new MonetaryCoin(33);   

     int total = mc1.add(mc2, mc3);        
     int value = mc2.getValue();          
    } 
} 

Мои Client является единственным, который не будет компилироваться. Я понятия не имею, что я делаю для клиента. Я должен использовать команду flip, которую я сделал ранее.

Пожалуйста, помогите!

Update: Мой клиент теперь

public class Client 
{ 
public static void main() 
{ 
    MonetaryCoin mc1 = new MonetaryCoin(25);    
    MonetaryCoin mc2 = new MonetaryCoin(13);  
    MonetaryCoin mc3 = new MonetaryCoin(33);  
    MonetaryCoin[] test = new MonetaryCoin[2]; 
    test[0] = mc2; 
    test[1] = mc3; 
    int total = mc1.add(test);        
    int value = mc2.getValue();  
    System.out.println("total: " +total+ " values: " +value); 
} 
} 

и компилирует. Однако, как я могу сделать так, чтобы монета наследовала способность родителя перевернуть?

+1

, пожалуйста, не связывайтесь с внешним изображением с сообщением об ошибке. вместо этого ставьте его в исходный вопрос. – aep

+0

Монета - родитель. MonetaryCoin уже наследует метод Flip Coin, поэтому вы можете вызвать 'mc1.flip()', чтобы перевернуть MonetaryCoin, и он будет называть 'Coin.flip()'. – mmking

ответ

3

Вы должны использовать MonetaryCoin... mc вместо MonetaryCoin[] mc, как это:

public class MonetaryCoin extends Coin{ 

    // All your other methods 
    // ... 

    public int add(MonetaryCoin... mc) 
    { 
     if (mc.length >= 0) 
      return -1; 
     int total = this.value; 
     for (int i = 0; i < mc.length; i++) 
     { 
      total += mc[i].getValue(); 
     } 
    return total; 
    } 

} 
  1. MonetaryCoin[] mc означает, что вы будете проходить в массиве, как { m1, m2, m3 }.
  2. MonetaryCoin... mc означает, что вы пройдете неизвестное количество монет.
+0

Если я решил вашу проблему, примите мой ответ, щелкнув по серой галочке слева. – mmking

Смежные вопросы