类
对象
识别类
类之间的关系
表达类关系的UML符号
构造器
显示参数和隐式参数
封装的好处
public class Employee {
public static int nextId = 0;
private String name;
private double salary;
private Date hireDate;
public Employee(String n, double s) {
name = n;
salary = s;
hireDate = new Date();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public Date getHireDate() {
return (Date) hireDate.clone();
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
public static int getNextId() {
return nextId;
}
}
不要返回编写引用可变对象的访问器方法
Test.class
public class Test {
public static void main(String[] args) {
Employee harry = new Employee("周杰伦",8800.0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = harry.getHireDate();
System.out.println(sdf.format(d));
d.setTime(d.getTime() + 24 * 60 * 60 * 1000);
Date d2 = harry.getHireDate();
System.out.println(sdf.format(d2));
}
}
结果:
2017-12-12 22:31:57
2017-12-13 22:31:57
修改成:
public Date getHireDate() {
return (Date) hireDate.clone();
}
final实例域
静态
静态域
Employee harry = new Employee("Harry", 16000.0);
harry.nextId = 10;
Employee tom = new Employee("Tom", 13000.0);
tom.nextId = 20;
System.out.println(harry.nextId); //20
System.out.println(tom.nextId); //20
System.out.println(Employee.nextId); //20
静态方法
输出
PrintStream ps = new PrintStream("D:\\file.txt");
System.setOut(ps);
System.out.println("HelloWorld");
读取
InputStream is = new FileInputStream("D:\\file.txt");
System.setIn(is);
Scanner sc = new Scanner(System.in);
StringBuilder builder = new StringBuilder();
while(sc.hasNext()){
builder.append(sc.nextLine()+"\n");
}
System.out.println(builder.toString());