2.Java--对象交互

2.1. 对象交互

如何识别对象?例如

    

设计一个显示类从0递增到极限复0

package clock;
public class Display {   
	private int value=0;
	private int limit=0;
	public  Display(int limit) {
		// TODO Auto-generated constructor stub
		this.limit=limit;
	}
	public void increase() {
		value++;
		if(value==limit) {
			value =0;
		}
	}
	public int getValue() {
		return value;
	}
	public static void main(String[] args) {
		Display d=new Display(24);
		for( ; ;) {
			d.increase();
			System.out.println(d.getValue());		}	
	}
}
public class clock { 
private Display hour=new Display(24);
private Display minute=new Display(60);
public void start() {
while(true) {
minute.increase();
if (minute.getValue()==0) {
hour.increase();
}
  System.out.printf("%02d:%02d\n",hour.getValue(),minute.getValue());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
         clock c=new clock();
         c.start();
}
}

2.2. 访问属性

private:私有属性,只有这个类内部可以访问。类内部指类的成员函数和定义初始化;这个限制是对类的而不是对对象的

public:任何人都可以访问。任何人指的是在任何类的函数或定义初始化中可以使用;使用指的是调用、访问或定义变量

一个编译文件(.Java文件)是一个编译单元

2.3. 类变量

static函数只能调用static函数,只能调用static变量。
    static修饰的变量只会在类进入到程序时(类加载时)进行初始化,static对象的初始化和对象的创建没关系

 3. 练习

有秒计时的数字时钟 ()


在上文的基础上我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:

public Clock(int hour, int minute, int second);

    用hour, minute和second初始化时间。

public void tick();

    “嘀嗒”一下,时间走1秒。

public String toString();

    返回一个String的值,以“hh:mm:ss“的形式表示当前时间。这里每个数值都占据两位,不足两位时补0。如“00:01:22"。注意其中的冒号是西文的,不是中文的。

 class Display {
   
	private int value=0;
	private int limit=0;
	public  Display(int limit) {
		// TODO Auto-generated constructor stub
		this.limit=limit;
	}
	public void increase() {
		value++;
		if(value==limit) {
			value =0;
		}
	}
	public int getValue() {
		return value;
	}
	public void setValue(int v) {
		value=v;
	}
	
}
class Clock { 
	private Display hour=new Display(24);
	private Display minute=new Display(60);
	private Display second=new Display(60);
	
	public String  toString() {
		String h=hour.getValue()<10?"0"+hour.getValue():String.valueOf(hour.getValue());
		String m=minute.getValue()<10?"0"+minute.getValue():String.valueOf(minute.getValue());
		String s=second.getValue()<10?"0"+second.getValue():String.valueOf(second.getValue());
		return h+":"+m+":"+s;
	}
	public void start() {
	
		minute.increase();
		if (minute.getValue()==0) {
			hour.increase();
		}
	   
		
	}
	public void tick() {
		second.increase();
		if (second.getValue()==0) {
			start();
		}	
		
	}
public Clock(int h,int m,int s) {
	// TODO Auto-generated constructor stub
	int tempH=h>23?h%24:h;
	hour.setValue(tempH);
	if (m>59) {
		minute.setValue(m%60);
		hour.increase();
	}else{
		minute.setValue(m);
	}
	if (s>59) {
		second.setValue(s%60);
		start();
	} else {
            second.setValue(s);
	}
	toString();
}
}
public class Main {
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
			java.util.Scanner in = new java.util.Scanner(System.in);
			Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
			clock.tick();
			System.out.println(clock);
			in.close();
	}
}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值