package abstractjava;/* @author wb @great forever i think,therefor i am */ public abstract class Person { private String name; //姓名 private int age; //年龄 private String sex; private String address; //地址 private String telephone; //电话 //定义构造方法 public Person() {} public Person(String name, int age, String sex, String address, String telephone) { this.name = name; this.age = age; this.sex = sex; this.address = address; this.telephone = telephone; } //定义setter()和getter()方法 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } //覆写toString()方法 @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + ", telephone=" + telephone + "]"; } //使用模板模式,定义好简单模板,打印信息 /* * 模板模式为面向对象设计模式之一,其大概思想(个人理解): * 在抽象方法中完成已经确定的内容,而不确定的部分,写成抽象方法并调用 * 而抽象方法的具体实现,交给继承他的类去具体实现, * 这样开发人员只要写好自己的实现部分便可,然后在主方法中, * 通过实例化后的抽象类直接调用模板方法便可 * * 以下方法只是一个简单的表示 * * */ public void display() { System.out.println( this ); //公共部分 System.out.println("-------------------风骚java分割线-----------------"); getInfo(); //开发人员具体的实现 System.out.println("-------------------风骚java分割线-----------------"); System.out.println( "本输出方法采用模板设计模式,以上为学生信息!" ); //公共部分 } //声明抽象方法,打印子类的添加信息 public abstract void getInfo(); }
package abstractjava;/* @author wb @great forever i think,therefor i am */ public class Student extends Person { private String sno; //学号 private String className; //班级 //定义构造方法 public Student(String name, int age, String sex, String address, String telephone,String sno,String className) { super(name,age,sex,address,telephone); this.sno = sno; this.className = className; } //定义setter()和getter()方法 public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } //实现父类抽象方法 public void getInfo() { System.out.println( "学号:" + this.getSno() + "\t班级:" + this.getClassName() ); } }
package abstractjava;/* @author wb @great forever i think,therefor i am */ public class main { public static void main(String[] args) { Person a=new Student("吴勃",23,"男","中国","23432","25038","tongx"); a.display(); } }