设计一个学生类Student,其属性有:姓名(name)、年龄(age)、学历(education),由Student类派生出本科生类Undergraduate和研究生类Graduate,本科生类增加属性:专业(specialty),研究生类增加属性:研究方向(direction)。每个类都有构造方法和用于输出属性信息的show()方法,在测试类TestExtends中测试输出。
package com.test;
public class Main {
public static void main(String[] args) {
Student s1 = new Student("张三",36,"大二");
Undergraduate u1 = new Undergraduate("李四",22,"大一","计科");
Graduate g1 = new Graduate("小二",19,"大三","人呢过智能");
System.out.println(s1.show());
System.out.println(u1.show());
System.out.println(g1.show());
}
public static class Student {
private String name;
private int age;
private String education;
public Student(){
}
public Student(String name,int age,String education){
this.name=name;
this.age=age;
this.education=education;
}
public String getName() {
return name;
}
public int getAge(){
return age;
}
public String getEducation() {
return education;
}
public String show(){
return ("name="+name+" age="+age+" education="+education);
}
}
public static class Undergraduate extends Student {
private String Specialty;
Undergraduate(){
}
Undergraduate(String name,int age,String education,String Specialty){
super(name, age, education);
this.Specialty=Specialty;
}
public String getSpecialty(){
return Specialty;
}
public String show(){
return (super.show()+" Specialty="+Specialty);
}
}
public static class Graduate extends Student {
private String direction;
Graduate(){
}
Graduate(String name,int age,String education,String direction){
super(name, age, education);
this.direction=direction;
}
public String getDirection(){
return direction;
}
public String show(){
return (super.show()+" direction="+direction);
}
}
}