实验10继承与多态、抽象类与接口一.实验目的(1)学习类的继承、子类在对象中调用父类定义的方法(2)学习类继承时方法的覆盖(3)学习java中抽象类的语法、子类中实现父类的抽象方法(4)学习java中接口的语法、接口的实现二.实验软件环境jdk1.6.0_18、windows7三.实验内容1写程序运行结果:importjava.io.*;classSuperClass{intx;SuperClass(){x=5;System.out.println(inSuperClass:x=+x);}voiddoSomething(){System.out.println(inSuperClass.doSomething());}}classSubClassextendsSuperClass{intx;SubClass(){super();//调用父类的构造方法x=5;//super()要放在方法中的第一句System.out.println(inSubClass:x=+x);}voiddoSomething(){super.doSomething();//调用父类的方法System.out.println(inSubClass.doSomething());System.out.println(super.x=+super.x+sub.x=+x);}}publicclassInheritance{publicstaticvoidmain(Stringargs[]){SubClasssubC=newSubClass();subC.doSomething();}}2、编写一个java程序,在程序中定义一个Animal类,再定义两个Animal类的子类Bird、Fish类,在子类中覆盖父类的play方法//Overriding.javaclassAnimal{voidplay(){System.out.println(我是动物,我会很多本领);}}[代码1]//定义Animal类的子类Bird,覆盖Animal类的play方法,在play方法中输出“我是小鸟,我能飞翔”[代码2]//定义Animal类的子类Fish,覆盖Animal类的play方法,在play方法中输出“我是小鱼,我能游泳”classOverriding{publicstaticvoidmain(Stringargs[]){Animals1=newAnimal();Birds2=newBird();Fishs3=newFish();s1.play();s2.play();s3.play();}}3、创建类A1类,实现构造方法输出“thisisA”,创建A1的子类B1,实现构造方法中输出“thisisB”,创建B1类的子类C1,实现构造方法中输出“thisisC”。编写测试类Test,创建A1类、B1类、C1类的对象,查看输出结果4、编写一个商品类(属性:产品编号,产品名称,产品单价),编写商品类的子类牛奶类,增加会员属性,覆盖父类的计算折扣的方法,要求计算出会员和非会员折扣后各是多少钱。编写测试类,初始化牛奶价格为3元,会员价为2.6,折扣的百分比为0.8,编写子类的方法,输出折扣后的价格5、定义一个抽象类--Shape,该类有求面积getArea和周长getPerimeter两个抽象方法。该抽象类派生三角形Triangle、矩形Rectangle、圆Circle三个子类,为各个子类实现抽象类的方法,并为这些子类编写合适的属性和构造方法。编写程序分别创建三角形、矩形、圆对象,并输出各个对象的面积和周长。开平方:Math.sqrt(doubleq);6、定义一个接口Drawable,该接口如下:publicinterfaceDrawable{publicvoiddraw();publicbooleanisVisible();}对第一题中的三个派生子类,分别实现Drawable接口,并对创建的对象调用其实现的接口方法。(对于方法的实现可以尽量简单,如draw方法可以简单的打印出:“某某类的draw方法”)7、(选做)某公司雇员(Employee)包括经理(Manager)、技术人员(Technician)和销售员(Saleman)。以Employee类为基类,派生出manager、technician和saleman类。Employee类的属性包括姓名、职工号、工资级别、月薪(实发基本工资加业绩工资);操作包括月薪计算函数pay(),该函数要求输入请假天数,扣除应扣工资后,得出实发基本工资。Technician类派生的属性有每小时附加酬金和当月工作时数,以及研究完成进度系数,业绩工资为三者之积。也包括同名的pay函数,工资总额为基本工资加业绩工资。Saleman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay函数,工资总额为基本工资加业绩工资。Manager类派生的属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。另外设计一个函数计算所有员工工资总和。8、(选做)按照下面的要求,完成程序并给出程序的运行结果假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:(1)经理(Manager)——每月获得一份固定的工资(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。(3)一般工人(Worker)——则按他每月工作的天数计算工资。根据上述要求试用类的继承和相关机制描述这些功能,并编写一个JavaApplication程序,演示这些类的用法。(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary(),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。)//Employee类的定义如下abstractclassEmployee{privateStringname;publicEmployee(Stringname){this.name=name;}publicStringgetName(){returnname;}publicabstractdoublecomputeSalary();}