Posted on 2007-08-28 01:37
Java蜘蛛人 --郑成桥 阅读(214)
评论(0) 编辑 收藏
把一个事物搞的越不具体 就是越抽象.. 比如一个人的抽象是动物 .再抽象点是哺乳类. ..等等.. 定义了一个抽象的父类 里面可以有一些抽象的方法 然后再定义子类来实现这些方法.. 用abstract 来修饰抽象. .
如 abstract class Test //定义抽象类
{
private String name;
Test(String n)
{
name=n;
}
public abstract String gethaha(); //定义一个抽象的方法.
}
抽象类是不能实例对像的.. 可以定义一个抽象类的对象变量,但是他只能引用非抽象子类的对象 如:
Test a=new Employee("xiaoqiao",9000);
import java.text.*;
import java.util.*;
public class PersonTest
{
public static void main (String[] args)
{
Person [] staff=new Person[2];
staff[0]=new Employee("郑成桥",5000,1989,05,06);
//这里注意 Person是抽象的类 不能实例对象,可以定义一个抽象类的对象变量,但是他只能引用非抽象子类的对象
staff[1]=new Student("哈哈啊","你好吗");
for(Person e:staff)
{
System.out.println(e.getName()+"\t"+e.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 //Employee实现这个抽象的类
{
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 s)
{
super(n);
major=s;
}
public String getDescription()
{
return "a student majoring in"+major;
}
}
__作者: 郑成桥