abstract class abstractPerson {
   //定义抽象类 人分为工人和学生 此类为共性的方法和属性
   private String name;
   private int age;
   public abstractPerson(String name, int age) {
     super();
     this.name = name;
     this.age = age;
  }
   public String getName() {
     return name;
  }
   public void setName(String name) {
     this.name = name;
  }
   public int getAge() {
     return age;
  }
   public void setAge( int age) {
     this.age = age;
  }
   public void say(){
     //传递具体对象的内容
    System.out.println( this.getContentSay());
  }
   public abstract    String    getContentSay(); //具体对象有子类单独定义
}
class Student extends abstractPerson {
   private float chengji;

   public Student(String name, int age, float chengji) {
     super(name, age); // 调用父类中的构造方法
     this.chengji = chengji;

  }

  @Override
   public String getContentSay() {
     // 子类重写父类中的抽象方法
    String info = "姓名-->" + super.getName() + "年龄-->" + super.getAge()
        + "成绩-->" + this.chengji + "\t";

     return info;
  }

}
class Worker extends abstractPerson {
   private float salary;

   public Worker(String name, int age, float salary) {
     super(name, age);
     this.salary = salary;
  }

  @Override
   public String getContentSay() {
    String info = "姓名-->" + super.getName() + "年龄-->" + super.getAge()
        + "工资-->" + this.salary + "\t";

     return info;
  }

}
public class FirstDemo {

   /**
    *    模板设计模式---抽象类的实际应用
    * @param args
    */

   public static void main(String[] args) {
    abstractPerson studentPerson = null; //实例化对象
    abstractPerson workerPerson = null;
     //通过子类实例化抽象类对象---->多态
    studentPerson = new Student( "张三", 20, 98.9f);
    workerPerson = new Worker( "老张", 45, 3500.00f);
    studentPerson.say(); //调用相关方法,体现多态
    workerPerson.say();
  }
}