您的位置:首页 > 编程语言 > Java开发

JAVA核心技术 第五章 继承 类、超类、子类 抽象类

2014-03-13 20:59 323 查看
/**

*抽象方法充当占位的角色,它们的具体实现在子类中。

*扩展抽象类可以分两种选择。

*一种是在子类中定义部分抽象方法或抽象方法也不定义,

*这样就必须将子类也标记为抽象类;

*另一种是定义全部的抽象方,这样以来,子类就不是抽象的了。

*

*

*/
import java.util.*;
public class PersonTest{
public static void main(String[] args) {
Person[] people=new Person[2];
people[0]=new Employee("Harry Hacker",50000,1989,10,1);
people[1]=new Student("Maria Morris","computer science");
for(Person p:people)
System.out.println(p.getName()+", "+p.getDescription());
}

}
abstract class Person{
private String name;
public Person(String n){
name=n;
}
public abstract String getDescription();
public String getName(){
return name;
}
}
class Employee extends Person{
private double salary;
private Date hireDay;
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 String getDescription(){
return String.format("an Employee with a salary of $%.2f",salary);
}
public void raiseSalary(double byPercent){
double raise=salary*byPercent/100;
salary+=raise;
}
}
class Student extends Person{
private String major;
public Student(String n,String m){
super(n);
major=m;
}
public String getDescription(){
return "a student majoring in "+major;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: