2015-09-24 126 views
-2

爲遊戲棒球和板球創建兩個BatAndBallGames類的具體類。每個具體類應該有2個新數據成員和2個新成員函數。2個類中的數據成員和成員函數不應該是相同的。無法運行此程序?

import java.util.*; 

abstract class BatAndBallGames 

{ 

    abstract void display(); 
    abstract void rulesSummary(); 
    int PlayersPerTeam; 
    int LengthOfGame; 

} 

concrete class Baseball extends BatAndBallGames 

{ 
    Baseball(int a,int b) 

    { 

    PlayersPerTeam=a; 
    LengthOfGame=b; 

    } 

    void rulesSummary() 

    { 

    System.out.println("baseball rules"); 

    } 

    void display() 

    { 

System.out.println("In baseball PlayersPerTeam=" +PlayersPerTeam + " LengthOfGame=" +LengthOfGame); 

    } 
} 

    concrete class Cricket extends BatAndBallGames 

    { 

    Cricket(int a,int b) 

    { 

     PlayersPerTeam = a; 
     LengthOfGame = b; 

    } 

     void rulesSummary() 

     { 

     System.out.println("cricket rules"); 

     } 

     void display() 

     { 

     System.out.println("In cricket PlayersPerTeam=" +PlayersPerTeam + " LengthOfGame=" +LengthOfGame); 

     } 
} 



public class BatandBall 

{ 
    public static void main(String args[]) 

    { 

    System.out.println("Airtel Champions League"); 

    BatAndBallGames obj = new Baseball(10,3); 
    obj.display(); 

    BatAndBallGames obj1 = new Cricket(11,8); 
    obj1.display(); 

    } 
} 
+3

因此,除了'具體'不是有效的標識符,爲什麼你不能運行它? – MadProgrammer

+0

你在哪裏讀過'concrete'。 – Satya

+3

歡迎使用堆棧溢出。您已將代碼轉移到問題中 - 但未向我們提供任何有關不工作的信息。請閱讀http://tinyurl.com/stack-hints - 確保您清楚地描述了問題,並理想地將代碼縮減爲顯示問題的最小*示例,並正確格式化。 –

回答

0

我們不能具體作爲關鍵字或標識符來定義java中的類。所以錯誤即將到來。 你可以嘗試這樣的,它是工作

import java.util.*; 

    abstract class BatAndBallGames 

    { 

     abstract void display(); 
     abstract void rulesSummary(); 
     int PlayersPerTeam; 
     int LengthOfGame; 

    } 

    class Baseball extends BatAndBallGames 

    { 
     Baseball(int a,int b) 

     { 

     PlayersPerTeam=a; 
     LengthOfGame=b; 

     } 

     void rulesSummary() 

     { 

     System.out.println("baseball rules"); 

     } 

     void display() 

     { 

    System.out.println("In baseball PlayersPerTeam=" +PlayersPerTeam + " LengthOfGame=" +LengthOfGame); 

     } 
    } 

     class Cricket extends BatAndBallGames 

     { 

     Cricket(int a,int b) 

     { 

      PlayersPerTeam = a; 
      LengthOfGame = b; 

     } 

      void rulesSummary() 

      { 

      System.out.println("cricket rules"); 

      } 

      void display() 

      { 

      System.out.println("In cricket PlayersPerTeam=" +PlayersPerTeam + " LengthOfGame=" +LengthOfGame); 

      } 
} 

class BatandBall 

{ 
    public static void main(String args[]) 

    { 

    System.out.println("Airtel Champions League"); 

    BatAndBallGames obj = new Baseball(10,3); 
    obj.display(); 

    BatAndBallGames obj1 = new Cricket(11,8); 
    obj1.display(); 

    } 
} 
0

當人們談論具體的類,他們只是在談論可實例類(即你可以創建一個類的對象)。這是一個你需要頭腦清醒的概念。

java中沒有concrete關鍵字。類默認是具體的。這與abstract class不同,後者無法實例化。

  • 混凝土默認
  • 摘要如果使用abstract關鍵字。

在你的(我的猜測,作業)上面的例子中,你有一個抽象類BatAndBallGameBaseballCricket都是BatAndBallGame的類型,所以從它們延伸出來。我們這樣做的原因是因爲所有的蝙蝠和球類遊戲都具有某些屬性。然而,有一個類型爲BatAndBallGame的對象是沒有意義的 - 它不是一個真正的遊戲,可以玩,板球和棒球就是這樣。

所以你必須:

abstract class BatAndBallGame {} 
class Cricket extends BatAndBallGame {} 
class Baseball extends BatAndBallGame {} 
+0

其實問題是這樣的.. >> @MichaelM >>爲遊戲棒球 和板球創建兩個BatAndBallGames類的具體類。每個具體類應具有2個新數據成員和2個新成員 函數。 2類中的數據成員和成員函數不應該是 一樣。 編寫創建每個子類的對象的main()方法,並向它們發送足夠的消息以顯示方法的工作。您還可以嘗試創建抽象類的對象,以查看編譯器打印的消息。 –

+0

是的,我知道。我沒有爲你做功課。我試圖解釋爲什麼你的解決方案不起作用。 – MichaelM

0

在提供的代碼中使用「具體」的作爲改性劑是不正確的。正如abhishek-rana已經提到的那樣,您可以將其刪除並解決問題。如果您正在使用「具體」作爲課程的訪問修飾符,則可以訪問official tutorial以瞭解更多信息。