&2 - 对象交互、访问属性、包和类变量
作者:互联网
第二章
对象交互
如何识别对象
如何交互
识别
将其拆分成小时和分钟,分别构建,再总和。
一个display显示的属性需要有当前值和最高上限
需要两种操作:增加和获取当前值
public class Display {
private int value = 0;
private int limit = 0;
public Display(int limit) {
this.limit = limit;
}
public void increase() {
value++;
if(value == limit) {
value = 0;
}
}
}
交互
对象组合成了新的对象
用一个类的两个对象建立起另外一个类
每一个对象 每一个类都尽可能独立
Clock类中的成员变量hour和minute都是Display类的对象
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());
}
}
}
访问属性
封闭的 private
作为一个私有的private成员变量在它的类的外部是看不见的,无法直接使用。只有自己能访问。
在没有特殊情况的时候,所有的成员变量应该是私有的,让其是私有的才能保护这些变量不被外界随意地使用,才能让这个变量按照设计者自己的意图来改变被使用
private
- 只有这个类内部可以访问
- 类内部指类的成员函数和定义初始化
- 这个限制是对类的而不是对对象的
开放的 public
public
- 任何人都可以访问
- 任何人指的是在任何类的函数或定义初始化中可以使用
- 使用指的是调用、访问或定义变量
既不带private也不带public意味着“friendly”,这样的成员变量和函数可以在同一个包里被访问。
编译单元:一个.Java文件、一个源代码文件是一个编译单元。
编译的时候一次对这一个单元去做编译的动作。
在一个编译单元中可以有多个java类,只有一个类可以是public。没有public的类就意味着只能在这个包里起作用。
—— public类名要和文件名必须相同
包 package
clock就是一个包
使用import可以跨包使用,每一个.
代表一个文件夹层次
import java.util.Scanner
类变量
public class Display {
private int value = 0;
private int limit = 0;
private static int step = 1;
public Display(int limit) {
this.limit = limit;
}
public void increase() {
value++;
if(value == limit) {
value = 0;
}
}
public static void main(String[] args) {
Display d1 = new Display(10);
Display d2 = new Display(20);
d1.increase();
System.out.println(d1.getValue());
System.out.println(d2.getValue());
System.out.println(d1.step);
System.out.println(d2.step);
d1.step = 2;
System.out.println(d1.step);
System.out.println(d2.step);
Display.step = 3;
System.out.println(d1.step);
System.out.println(d2.step);
}
}
/*输出结果:
1
0
1
1
2
2
3
3
*/
static变量可以被类.变量
访问,static变量称为类变量,不是成员变量,是类的变量,不属于任何一个对象,它属于这个类,任何对象都拥有这个变量,但只有这一份
类函数
static函数只能访问static变量,static函数的所属情况与类变量是一样的。
static的初始化和对象是没有关系的。
标签:变量,System,private,Display,包和类,limit,交互,public,属性 来源: https://blog.csdn.net/weixin_45427596/article/details/123639257