package com.lei;
public class lei
{
public static void main(String[] args)
{
//以类似数组的写法实例化多个实例,记住
Employee[] staff=new Employee[3];
staff[0]=new Employee("Tom",40000);//按构造器带入数值
staff[1]=new Employee("Dick",60000);
staff[2]=new Employee("Harry",65000);
//直接实例一个的写法
//Manager boss=new Manager("Carl Cracker",80000,1987,12,15);
//P80foreach循环格式
for (Employee e:staff)
{
e.setId();//调用类中方法设置实例中的id
System.out.println("name="+e.getName()+",id="+e.getId()+",salary="+e.getSalary());
}
//调用静态方法
int n=Employee.getNextId();
System.out.println("Next available id="+n);
}
}
//自定义类
//打完程序才发现,原来类是在主程序的方括号外定义的
class Employee
{
//设置静态域,这是所有实例共享的
private static int nextId=1;
//定义实例域用来存放将要操作的数据
//关键字private确保只有Empolyee类自身的方法能够访问这些实例域
private String name;//
private double salary;
private int id;
//构造器
public Employee(String n,double s)
{
name = n;
salary =s;
id=0;//这一条在构造器外面写也可以,但是一般在里面写
}
//公有方法返回私有实例域,这样可以保护私有域
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public int getId()
{
return id;
}
public void setId()
{
//以实现每个新的实例都有一个新id
id=nextId;
nextId++;
}
//静态方法不能向对象实施操作,包括不能访问实例域,静态方法可以访问静态域,但是不能改变静态域(这点存疑)
public static int getNextId()
{
return nextId;
}
//这是用于测试的P115,你按了run按钮后可以决定启动主程序还是这个:下拉run as点右边的唯一项
//你引用的包也是类
public static void main(String[] args)
{
Employee e=new Employee("Harry",50000);
System.out.println(e.getName()+" "+e.getSalary());
}
}