java进阶-第2章 对象交互

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的成员变量都能够通过类的名字去访问,但也可以通过某个对象去访问,但是不能获得那个对象的具体信息。理由如上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值