Posted on 2007-08-28 01:37
Java蜘蛛人 --鄭成橋 閱讀(216)
評(píng)論(0) 編輯 收藏
把一個(gè)事物搞的越不具體 就是越抽象.. 比如一個(gè)人的抽象是動(dòng)物 .再抽象點(diǎn)是哺乳類(lèi). ..等等.. 定義了一個(gè)抽象的父類(lèi) 里面可以有一些抽象的方法 然后再定義子類(lèi)來(lái)實(shí)現(xiàn)這些方法.. 用abstract 來(lái)修飾抽象. .
如 abstract class Test //定義抽象類(lèi)
{
private String name;
Test(String n)
{
name=n;
}
public abstract String gethaha(); //定義一個(gè)抽象的方法.
}
抽象類(lèi)是不能實(shí)例對(duì)像的.. 可以定義一個(gè)抽象類(lèi)的對(duì)象變量,但是他只能引用非抽象子類(lèi)的對(duì)象 如:
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是抽象的類(lèi) 不能實(shí)例對(duì)象,可以定義一個(gè)抽象類(lèi)的對(duì)象變量,但是他只能引用非抽象子類(lèi)的對(duì)象
staff[1]=new Student("哈哈啊","你好嗎");
for(Person e:staff)
{
System.out.println(e.getName()+"\t"+e.getDescription());
}
}
}

abstract class Person //定義一個(gè)抽象的類(lèi)
{
private String name;
public Person(String n)
{
name=n;
}
public abstract String getDescription();//定義一個(gè)抽象的方法
public String getName()
{
return name;
}

}
class Employee extends Person //Employee實(shí)現(xiàn)這個(gè)抽象的類(lèi)
{
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;
}
}
__作者: 鄭成橋