用Java语言实现一个数字时钟模块
这需要我们一开始去创建一个clock的Java project,数字时钟的显示模块,一般格式为小时和分钟(00:00-23:59).,所以我也需要在这工程上定义两个类(class)分别是Display和Clock,我一般写类名的时候首字母都大写;在每一个类中我们都需要定义一些内部成员函数和变量,来完成一些操作;
让我们先看看类Display中的模块:
package clock;
public class Display {
private int value = 0; //小时数值
private int limit = 0; //一个限制,上限数值后的反应
public Display(int limit) //构造函数,
{
this.limit = limit; //用this调用成员变量中的limit初始值为0,来和本地变量中的limit
(24)进行数值传递
}
public void increasa() //让value数值加一的函数increase,且带有返回类型
{
value++;
if(value == limit) //判断value中的数值加一是否最终等于上限值24
{
value = 0;
}
}
public int getvalue() //得到这个value值的函数getvalue,也就是目前的value值
{
return value;
}
//例如表达数字时钟的数值区间分别为小时和分钟,小时和分钟(1-24小时0-60分钟或00:00-23:59)
public static void main(String[] args) {
// TODO Auto-generated method stub
Display d = new Display(24); //创建类的对象变量d
for(;;) //做个无限循环,也就是死循环
{
d.increasa();
System.out.println(d.getvalue());
}
}
}
这是一个相对独立的程序,但这还并不完善
我们前面说了,需要两个模块,一个类Display另一个就是类Clock,在Clock中我们要去定义两个对象属性hour和minute,这里我们也要注意程序的public公有和private私有里的函数和变量的使用,访问等
package clock;
public class Clock {
// 此时需要定义类Clock的一个属性minute和hour
private Display hour = new Display(24); // 创建一个新的函数Display对象中的对象属性hour
private Display minute = new Display(60); //再创建一个新的函数Display对象来定义一个对象属性minute
//以上两者都是独立,互不干涉
public void start()
{
while( true)
{
minute.increasa(); //minute自动增加
if(minute.getvalue()==0) //如果自动增加的值=0
{
hour.increasa(); //则hour就自动增加
}
System.out.printf("%02d:%02d\n",hour.getvalue(),minute.getvalue()); //%开头输出的整数,2d是两个字符的位置
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Clock clock = new Clock();
clock.start(); //启动
}
}
在package clock中的Display、Clock类
整个数字时钟在程序中运行结果也算完整了,
再来看看程序中的public private的关系是如何
在现在的clock工程当中,有两个类Display和Clock,这两个类中都有自己的mian函数;
例如类Display中的成员变量可以是其他类Clock中的对象;
private 私有的函数或变量,只有在类的内部中的函数或变量访问,相当于自己访问自己了;
public意义是公有的,在类中是可以被其它函数和变量访问的;
当public后面无class或static关键字的时候,可定义函数,都可以访问,例如类Clock可以访问Display中的所有带有public的函数和变量;
如果一个函数或变量前面没有public或private,那么他是“friendly”的,包(package)中的其它类都可以访问它;
如果一个类前面有public,这表明任何人都可以用这个类的定义来定义变量;
点.java文件也叫编译单元,一次只能编译一个点java文件,且一个.Java文件中只能有一个public class;