Java第五次上机实验(子类与继承)
目的:
本实验的目的是让学生熟悉下来知识点:子类的继承性,子类对象的创建过程。成员变量的继承与隐藏,方法的继承与重写。
要求:
编写程序模拟大学生,本科生,研究生和博士生。除主类E外,还有4个类UniversityStudent,Undergraduate,Graduate,PhDStudent。
其中UniversityStudent类有成员变量age,方法speak()。
Undergraduate类是UniversityStudent的子类,增加了方法 supervisor();
Graduate类是UniversityStudent的子类,增加了方法supervisor();
PhDstudent类是Graduate类的子类,重写了supervisor().
要求输出结果如下:
F:\>javac E.java
F:\>java E
我是大学生
我是本科生
我20岁,我没有导师,好可怜!
我是硕士研究生
我24岁,我有导师,我导师好厉害!
我是博士研究生
我27岁,我导师是二级教授,博士导师,好厉害呀!
package test05; //supervisor为导师 //UniversityStudent为大学生 class UniversityStudent{ int age; String sp = "我是大学生"; void speak(){ System.out.println(sp); } } //Undergraduate为本科生 class Undergraduate extends UniversityStudent{ //这里创建导师方法 void supervisor(int age){ System.out.println("我"+age+"岁,我没有导师,好可怜!"); } } //Graduate为研究生 class Graduate extends UniversityStudent{ void supervisor(int age){ System.out.println("我"+age+"岁,我有导师,我导师好厉害!"); } } //PhDStudent为博士生 class PhDStudent extends Graduate{ void supervisor(int age){ System.out.println("我"+age+"岁,我导师是二级教授,博士导师,好厉害呀!"); }//这里重写Graduate中的supervisor() } public class E { public static void main(String args[]){ UniversityStudent student01 = new UniversityStudent(); student01.speak(); Undergraduate student02 = new Undergraduate(); student02.sp = "我是本科生"; student02.speak(); student02.supervisor(20); Graduate student03 = new Graduate(); student03.sp = "我是硕士研究生"; student03.speak(); student03.supervisor(24); PhDStudent student04 = new PhDStudent(); student04.sp = "我是博士研究生"; student04.speak(); student04.supervisor(27); } }
运行结果
其它:
其中speak()的另一种写法
主类中写
这里这两部分就可以省略了