附录1 Employee.java
public class Employee{ private String name; private String department; private double basicpay; private double pay; Employee(){ this(\ } Employee(String n, String d, double bp){ name=n; department=d; basicpay=bp; } public double getPay(){ pay=basicpay; return pay; } public String toString(){ return \ } }
附录2 TestM.java
class Bird { String name; Bird(String n) { name = n; }
final public void fly() {
System.out.println(name + \ }
public void fly(int number) {
System.out.println(name + \ }
protected void shout() {
System.out.println(name + \ }
private void shout(int number) {
System.out.println(name + \ }
33
}
class Swan
extends Bird { Swan(String n) { super(n); }
public void fly() {
System.out.println(name + \ }
private void fly(int number) {
System.out.println(name + \ }
protected void shout() {
System.out.println(name + \ }
private void swim() {
System.out.println(name + \ } }
public class TestM {
public static void main(String[] args) { Bird b1 = new Bird(\小小鸟\ Swan b2 = new Swan(\小天鹅\ b2.fly(); b2.swim(); } }
附录3 TestM.java
class Bird { String name; Bird(String n) { name = n; }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void shout(int number) {
34
System.out.println(name+\ } }
class Swan extends Bird { Swan(String n) { super(n); }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void swim() {
System.out.println(name+\ } }
class Duck extends Bird { Duck(String n) { super(n); }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void swim() {
System.out.println(name+\ } }
public class TestM {
public static void main(String[] args) { Bird b1 = new Bird(\小小鸟\ Bird b2 = new Swan(\小天鹅\ Bird b3 = new Duck(\唐老鸭\
/*分析以下语句编译错误的原因*/ //b1.swin(); //b2.swin();
35
//b3.swin();
//(Duck)b3.swim();
/****************************/
/*先分析以下语句的运行结果,再执行验证*/ b1.fly(); b2.fly(); b3.fly();
b1.shout(1); b2.shout(2); b3.shout(3);
Swan s2=(Swan)b2; s2.swim();
s2=(Swan)b1; s2.swim();
s2=(Swan)b3; s2.swim();
((Duck)b3).swim();
/****************************/ } }
36
实验四、继承与多态(二)
1.实验目的
(1)结合面向对象思想,熟练掌握子类的定义以及子类构造方法的定义,理解子类构造函数调用顺序。
(2)掌握父类方法的重写、深入理解子类中对父类成员的访问权限。
(3)理解Object的意义,掌握自定义类的toString()、equals()方法的实现。
(4)理解向上转型和向下转型,以及多态的目的和意义,掌握多态的常用形式。
2.实验内容和步骤
(1)设计一个形状类Shape,包含一个getArea()方法,该方法不包含实际语句。
(2)在Shape类基础上设计圆形、矩形、三角形和梯形四个子类,要求根据实际形状重写getArea()方法。
(3)设计一个TestShape类,包含变量area(存储总面积)、静态方法countArea(Shape s),该方法负责把参数中的形状面积加入到area中。在main函数中新建(2)中四种类型的对象s1、s2、s3、s4,通过调用countArea方法把四个对象面积累加到area中,最后输出area。
(4)选做。设计在数据结构中学过的单链表类MyLinkList,该类包含头结点,以及插入节点、删除节点、打印单链表等函数。
37