毕向东——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();
	}
}

猜你喜欢

转载自blog.csdn.net/yaocong1993/article/details/79989827
今日推荐