面向对象特征
封装 继承 多态
成员变量 属性 类中方法外
成员方法 行为 去掉static
类:相关属性和行为的集合
对象:一类事物的具体体现
类名 对象名=new 类名();
对象名.变量名
对象名.方法名
car a1=new car();
a1=null;
成员变量:类中方法外 在对象内 堆 有默认初始化值 生命随对象
方法变量:方法定义或方法声明 在方法内 栈
无初始化 必须定义赋值 生命随着方法
引用数据类型变量 数组 类 接口 枚举
匿名对象 new Car.run(); 只适合一次调用 创建多次就生成多个对象
new Car.color="red";
new Car.num=8;
运行是null和0
匿名对象可以调用属性 会变成垃圾 无意义
需要赋值不能用
匿名对象可以作为参数传递
method(new car());
封装:隐藏对象属性和实现细节 对外提供公共方式
好处:隐藏细节 提高复用性 提高安全性
原则:不需要对外提供内容隐藏起来隐藏属性 公共对外公共方法访问
private 可以修饰成员变量成员方法
在类里面 setAge() getAge() 改变
this关键字 代表当前对象引用 用来区分成员变量局部变量
package haha;
import java.util.Date;
import java.util.GregorianCalendar;
public class EmployeeTest {
public static void main(String[] args) {
Employee[] staff=new Employee[3];
staff[0]=new Employee("Carl Cracker", 75000, 1987,12,15);
staff[1]=new Employee("Harry Hacker", 50000, 1989,10,1);
staff[2]=new Employee("Tony Tester", 40000, 1990,3,15);
for (Employee e : staff) {
e.raiseSalary(5);
}
for (Employee e : staff) {
System.out.println("name="+e.getName()+",salary="+e.getSalary()+",hireday="+e.getHireDay());
}
}
}
class Employee
{
private String name;
private double salary;
private Date hireDay;
public Employee() {
}
public Employee(String name, double salary, int year,int month,int day) {
this.name = name