学习内容
1、定义描述学生的student类,包含受保护两个数据成员,分辨是描述姓名的,string类型和描述学号的,int类型,构造函数有两个形参,用于设定这两个数据成员的值,此外包含6个成员函数,用于设定姓名和学号的函数,void setnameid(), 用于显示姓名和学号的函数void displaynameid(),以及四个纯虚函数void setmajor() ,string getmajor() , void setadvisor() 和 string getadvisor();
由学生类派生本科生类understud,新增受保护数据成员,描述专业,string类型,构造函数具有三个形参,重新定义函数void setmajor() 和string getmajor(),用于设置专业和获取专业;
由本科生类派生研究生类poststud,新增私有数据成员,描述导师姓名,string类型,构造函数具有四个形参,且具有缺省值,学生姓名缺省值为“***”,学号缺省值为-1,专业缺省值为“###”,导师姓名缺省值为“&&&”,重新定义函数void setadvisor() 和 string getadvisor(),用于设置导师属性和获取导师属性值;
在主函数中定义相应的指针对象和普通对象,请问可以定义哪些(哪个)类的普通对象,为什么(在实验报告中回答),定义开关变量,int型,通过输入进行赋值,若该值为0,则输出研究生对象的默认属性值,若非零,则依次输入姓名、学号、专业和导师信息,并依次打印出来。
1 //Student类:
2 import java.util.*;
3 public abstract class Student4 {
4 protected String name="***";
5 protected int ID=-1;
6 Student4(){}
7 Student4(String n,int i){
8 name=n;
9 ID=i;
10 }
11 public void setnameid() {
12 System.out.println("请输入姓名、学号:");
13 Scanner con=new Scanner(System.in);
14 name=con.next();
15 ID=con.nextInt();
16 }
17 public void displaynameid() {
18 System.out.println("姓名:"+name+"\t学号:"+ID);
19 }
20 public abstract void setmajor();
21 public abstract String getmajor();
22 public abstract void setadvisor();
23 public abstract String getadvisor();
24 }
25 //understud类:
26 import java.util.*;
27 public class understud extends Student4 {
28 protected String major="###";
29 understud(){}
30 understud(String n,int id,String m){
31 super(n,id);
32 major=m;
33 }
34 public void setmajor() {
35 System.out.println("请输入专业:");
36 Scanner con=new Scanner(System.in);
37 major=con.next();
38 }
39 public String getmajor() {
40 return major;
41 }
42 public void setadvisor() {}
43 public String getadvisor() {return "0";}
44 }
45 //Poststud类:
46 import java.util.Scanner;
47 public class poststud extends understud{
48 private String name2="&&&";
49 poststud(){}
50 poststud(String n,int id,String m,String n2){
51 super(n,id,m);
52 name2=n2;
53 }
54 public void setadvisor() {
55 System.out.println("请输入导师姓名:");
56 Scanner con=new Scanner(System.in);
57 name2=con.next();
58 }
59 public String getadvisor() {
60 return name2;
61 }
62 }
63 //Test类:
64 import java.util.Scanner;
65 public class Test4 {
66 public static void main(String[] args) {
67 int n;
68 System.out.println("***************************");
69 System.out.println("0、输出研究生对象的默认属性值");
70 System.out.println("1、输入并输出信息");
71 System.out.println("***************************");
72 Scanner con=new Scanner(System.in);
73 n=con.nextInt();
74 poststud v1=new poststud();
75 switch(n) {
76 case 0:{
77 v1.displaynameid();
78 System.out.println("专业:"+v1.getmajor());
79 System.out.println("导师姓名:"+v1.getadvisor());
80 break;
81 }
82 case 1:{
83 v1.setnameid();
84 v1.setmajor();
85 v1.setadvisor();
86 v1.displaynameid();
87 System.out.println("专业:"+v1.getmajor());
88 System.out.println("导师姓名:"+v1.getadvisor());
89 break;
90 }
91 }
92 }
93 }

