2015-09-24 138 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以了解更多信息。