2.1 对象交互
//**1**//
/**
* 时钟-一部分
*实现:两个数字,从00-23或00-59
* @author Fluoxtine
*
*/
public class Display {
private int value = 0; //虽然java默认0值,但是可以培养好习惯
private int limit = 0; //界限
public Display(int limit) { //
this.limit=limit; //将参数赋值给成员变量
}
public void increase(){ //跳动
value++; //计数值自增
if(value==limit) { //当某个时针或者分针在0-边界这就反复跳跃
value=0;
}
}
public int getValue() { //获取计数值
return value;
}
public static void main(String[] args) { //程序的入口
// TODO Auto-generated method stub
Display d = new Display(24); //定义对象(测试)
for(;;) { //无限循环
d.increase(); //在24内自增
System.out.println(d.getValue()); //打印出增加的过程
}
}
}
//**2**//
/**
* Clock
* 主函数入口
* 调用了Display这个类
* @author Fluoxtine
*
*/
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) { //当分针到达上限时时针加1
hour.increase();
}
System.out.printf("%02d:%02d\n",hour.getValue(),minute.getValue());
//%02d:%02d\n 格式,0n:0n,nn:nn,02:24
}
}
public static void main(String[] args) { //程序的总入口
// TODO Auto-generated method stub
Clock clock = new Clock(); //创建一个clock时钟(对象)
clock.start(); //clock开始跳动
}
}
一个类里面他的成员变量可以是其他类的对象。
2.2 访问属性
2.2.1 private
1、 只有这个类内部可以访问。
类内部指类的成员函数和定义初始化。
这个限制是对类的而不是对对象的。
2.2.2 public
1、任何人都能访问。
2.2.3 friendly
位于和它一个包的其他类可以访问。
2.2.4 protected 继承
2.2.5 编译单元
意思编译的时候是一次对这一个编译单元去做一个编译动作。
编译单元里可以有很多java类,在编译单元里面不止一个类的时候,只能有一个public。
一个类中要是没有public,这个类只能在这个包内起作用,如下。一个.java文件是一个编译单元。
class A{
}//如果没有public ,在其他包内就没得办法用到
2.3 包 Package
/**如**/
package verdingMachine; //包的名字verdingMachine
包的名字可以带.,.表达的是在文件系统里文件夹的层次,每一个点代表一个文件夹的层次。通过这个管理类,将类写上全名,分门别类放在一个包里面,形成一个类的有效管理机制。
使用别的包里的类:
import display.Display; //display 包
//Display是这个包里的类的全名
//import是关键字
2.4 类变量
2.4.1 static
//程序的入口
public static void main(String[] args){
} //static 关键字
访问:
1、 [类名].[类变量]
private static int step =1; //类变量
//step 类变量 它不属于任何对象只属于这个类
2、 [对象].[类变量]
d.step=2;//对象.类变量
System.out.println(d.step); //打印
注:1 和2 两种方式是不同的,实际上对象里不包含类变量,主要是因为这个对象属于这个类所以才能访问到。
调用函数:
public static void f(){ //类函数
value++;
}
public void increase(){
value++;
if(value==limit) {
value=0;
}
}
public static void main(String[] args){
f();//类函数可以直接调用
increase(); //报错
//成员函数由对象管理
}
规则: 类变量和类函数
static 的函数只能调用static的函数,只能去访问static的成员变量。
static的函数和static的成员变量都能够通过类的名字去访问,但也可以通过某个对象去访问,但是不能获得那个对象的具体信息。理由如上。