java中抽象类的使用示例

关于抽象类、抽象方法的说明:

1、在自下而上的类的继承层次结构中,上层的类更具通用性,甚至可能更加抽象;

2、抽象类是类的抽象概述,仅提供类的定义,而不提供类的具体实现细节。抽象类的实现交由派生类(子类)来完成。

3、抽象类的声明中包括abstract关键字,抽象类的存在是为了给派生类提供一种约定;

4、为了提高程序的清晰度,包含一个或多个抽象方法的类本身必须被声明为抽象的;

5、抽象方法充当着占位的角色,它们的具体实现在子类中;

6、类即使不含抽象方法,也可以将类声明为抽象类;

7、抽象类不能被实例化。也就是说,如果将一个类声明为抽象类(abstract),就不能创建这个类的对象。

8、可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象。

9、扩展抽象类可以有两种选择:

(1)在子类中定义部分抽象方法或抽象方法不定义,这样就必须将子类也标记为抽象类;

(2)定义全部的抽象方法,这样子类就不是抽象的了。



下面通过具体的示例做以阐述;


import java.util.*;

public class PersonTest {

	/**
	 * 本示例演示抽象类的继承
	 * @author cruise 2013-3-23 16:10
	 *  
	 */
	public static void main(String[] args) {
		Person[] person = new Person[2];
		person[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
		person[1] = new Student("Tommy Jonson", "computer science");

		for (Person p : person) {
			System.out.println(p.getName() + " , " + p.getDescription());
		}

	}

}

abstract class Person {
	Person(String n) {
		name = n;
	}

	public String getName() {
		return name;
	}

	public abstract String getDescription();//注意抽象方法的使用

	private String name;
}

class Employee extends Person {
	public Employee(String n, double s, int year, int month, int day) {
		super(n);
		salary = s;
		GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
		hireDay = calendar.getTime();

	}

	public double getSalary() {
		return salary;
	}

	public Date getHireDay() {
		return hireDay;
	}

	public double raiseSalary(int byPercent) {
		double raise = salary * byPercent / 100;
		return salary += raise;
	}

	public String getDescription() {
		return String.format("an employee with a salary of $%.2f", salary);
	}

	private double salary;
	private Date hireDay;
}

class Student extends Person {

	Student(String n, String m) {
		super(n);
		major = m;

	}

	public String getDescription() {
		return "a student majoring in " + major;
	}

	private String major;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值