要求:
设计一个学生类Student,包含的属性有姓名name和年龄age。由学生类派生出本科生类Undergraduate和Graduate,本科生类包含的属性有专业specialty,研究生类包含的属性有研究方向studydirection.每个类都有相关的数据输出方法。(用上this,super关键字)
思路:
画出UML图分析
其实也不复杂,三个类都有两个构造方法,学生类可以设置和打印年龄和姓名
而本科生类可以设置和打印专业方向,研究生可以设置和打印研究方向
Student.java
public class Student { int age; String name; protected Student(){} protected Student(String name, int age) { this.name = name; this.age = age; } void set_name(String name) { this.name = name; } void print_name() { System.out.println("学生姓名:"+name); } void set_age(int age) { this.age = age; } void print_age() { System.out.println("学生学号:"+age); } }
Undergraduate.java
public class Undergraduate extends Student { String specialty; public Undergraduate(){} public Undergraduate(String name, int age, String specialty) { super.name = name; super.age = age; this.specialty = specialty; } void set_specialty(String specialty) { this.specialty = specialty; } void print_specialty() { System.out.println("专业方向:"+specialty); } }
Graduate.java
public class Graduate extends Student{ String studydirection; public Graduate(){} public Graduate(String name, int age, String studydirection) { super.name = name; super.age = age; this.studydirection = studydirection; } void set_studydirection(String studydirection) { this.studydirection = studydirection; } void print_studydirection() { System.out.println("专业方向:"+studydirection); } }
Test5.java
public class Test5 { public static void main(String[] args) { Undergraduate zhang = new Undergraduate("张三",20,"考古学"); zhang.print_name(); zhang.print_age(); zhang.print_specialty(); System.out.println(" "); Graduate li = new Graduate("李四",25,"洛阳铲"); li.print_name(); li.print_age(); li.print_studydirection(); } }