[Java][抽象类的使用]

使用抽象类的一个例子

某公司存在雇员:
1.程序员,有工号,年龄,工资,负责编写代码。
2.经理,有工号,年龄,工资,奖金,负责企业管理。
请为该数据建模。

思路

1.采用面向对象编程思路的话,先提取对象。由名词提炼法,不难得到两个合适的对象为程序员和经理。
2.看到每个对象拥有的数据发现,有一些共性的东西:程序员和经理都有工号,年龄,工资的属性,考虑到代码复用性,我们想到类的继承。
3.程序员继承经理?不合适,因为经理有奖金程序员没有啊,而且经理有管理的功能,程序员并没有。反过来一样,经理继承程序员也不合适,因为程序员有编程的功能,而经理并没有。从另一个角度来说,程序员和经理并不存在所属关系,所以建模时并不能够有哪个类来继承哪个类。但是两者都是公司的雇员,有共性的工号,年龄,工资的属性所以可以向上抽取,创建一个雇员类,两者都继承雇员类来实现代码复用。
而两者的工作不一样怎么办,怎么在雇员类里体现啊,用抽象关键字定义抽象功能(函数)!带有抽象函数的类为抽象类,类名前必须有abstract关键字修饰,不然会报错。

代码

abstract class Employee
{
	public String id;
	public int age;
	public double salary;
	abstract void work();
}
class Coder extends Employee
{
	public void work()
	{
		System.out.println("Coder codes");	
	}
}
class Manager extends Employee
{
	public void work()
	{
		System.out.println("Manager manages");	
	}
}
class AbstractDemo 
{
	public static void main(String[] args) 
	{
		Coder c = new Coder();
		c.id = "9527";
		Manager m = new Manager();
		System.out.println(c.id);
		c.work();
		m.work();	
	}
}

小结

其实抽象类也是类,和一般的类不同在于,类有足够的信息来描述事物,而抽象类并没有足够的信息来描述事物。事物的行为还不能够确定,没有办法写出方法的方法体,方法名前要加abstract关键字来标明这是一个抽象的方法,而具有抽象方法的类即为抽象类。

猜你喜欢

转载自blog.csdn.net/qq_29880477/article/details/84538033