1. 程式人生 > >畢向東——JAVA基礎——繼承和抽象

畢向東——JAVA基礎——繼承和抽象

1、繼承和抽象應用

/*
假如我們在開發一個系統時需要對員工進行建模,員工包含 3 個屬性:
姓名、工號以及工資。經理也是員工,除了含有員工的屬性外,另為還有一個
獎金屬性。請使用繼承的思想設計出員工類和經理類。要求類中提供必要的方
法進行屬性訪問。

員工類:name id pay

經理類:繼承了員工,並有自己特有的bonus。

經理和員工沒有繼承關係,有一些共同的屬性和功能,但功能內容不同
*/
abstract class Employee
{
	private String name;
	private String id;
	private double pay;

	Employee(String name,String id,double pay)
	{
		this.name=name;
		this.id=id;
		this.pay=pay;
	}

	public abstract void work();
}

class Professional extends Employee
{
	Professional(String name,String id,double pay)
	{
		super(name,id,pay);
	}

	public void work()
	{
		System.out.println("professional work");
	}
}

class Manager extends Employee
{
	private int bonus;

	Manager(String name,String id,double pay,int bonus)
	{
		super(name,id,pay);
		this.bonus=bonus;
	}

	public void work()
	{
		System.out.println("namager work");
	}
}

2、模板方法設計模式

/*模板方法設計模式:
模板方法,在定義功能時,一部分確定,一部分不確定,而確定的部分在使用不確定部分;
將不確定的部分暴露出去,由子類完成,不一定抽象,可以有預設方法;
確定的部分有時可以防止複寫。final
*/

/*
需求:獲取一段程式的執行時間。
原理:獲取程式開始和結束的時間,相減。
*/
abstract class GetTime 
{
	public final void getTime() //final避免複寫
	{
		long start=System.currentTimeMillis();//獲取時間

		runCode();

		long end=System.currentTimeMillis();

		System.out.println("經過的毫秒數:"+(end-start));
	}

	public abstract void runCode();//抽象
}

class SubTime extends GetTime
{
	public void runCode()//覆蓋
	{
		for(int i=0;i<2000;i++)
		{
			System.out.print(i);
		}
	}
}

class GetTimeDemo
{
	public static void main(String[] args)
	{
		SubTime gt=new SubTime();
		gt.getTime();
	}
}