4-3類P117(定義類,實例化,構造器,方法,靜態方法)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章