单人纸牌(Elevens Lab)活动1:设计并创建class Card
导言
在本活动中,你将完成class Card
并以此来创建扑克牌object。
回想一下你玩过的扑克游戏。这些游戏需要扑克牌object本身“记住”什么信息?这些游戏又需要扑克牌object能够执行什么操作?
探索
现在让我们来实现表示扑克牌的class
。它应该包含哪些实例变量呢?应该提供哪些method呢?与同学讨论你对class Card
的想法。
阅读目录里已经部分完成的class Card
框架。在读的时候,你会注意到在toString
method上使用的@Override
注释。Java中,@Override
注释被用来表明某个method一定重写了parent class中的同名method。在这个例子中,class Object
(Java所有class默认的parent class)的toString
method要被class Card
的对应method重写。如果该method并没有实际重写parent class的对应method,Java编译器会报错。
这个功能在某些情况下会相当有用。Java的初学者常常会在编写child class时搞错parent class中的method签名(即参数列表和返回值的组合)。例如,在以下的class Weight
中,程序员希望toString
method能被作为Object
的toString
而调用。
public class Weight { private int pounds; private int ounces; public String tostring(String str) { return this.pounds + " lb. " + this.ounces + " oz."; } }
不过,程序员很快会发现这段代码达不到预期的效果。class Object
中的toString
有不同的名字和签名。以下method才能正确重写toString
。
public String toString() { return this.pounds + " lb. " + this.ounces + " oz."; }
对上一个例子,如果加上@Override
注释的话,Java编译器就会报错以及时提醒程序员更正问题。
练习
- 利用框架完成
class Card
的实现。你需要完成:- 一个接受两个
String
参数和一个int
参数的构造函数。String
参数分别表示扑克牌的大小和花色。int
参数表示扑克牌的点数值。 - 读取大小、花色和点数值的method。
- 测试两个扑克牌
object
是否相等的method。 toString
method用来以字符串形式输出扑克牌。格式是大小 of 花色 (point value = 点数值)
- 一个接受两个
- 在完成
class Card
之后,利用同一目录中的CardTester.java
来创建三个Card
的object,并测试它们的每个method。
1 条评论
AP计算机科学实验:单人纸牌(Elevens Lab) – AP Computer Science · 2018年5月12日 下午2:09
[…] 活动1:设计并创建class Card […]