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());
}
}