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

 

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