当前位置:首页 > JAVA继承、接口和多态实验 - 图文
《面向对象程序设计》实验报告 5 图3-2运行结果 b.用对话框的方式输出 图3-3运行结果 ②a.将Bus类和Car类放置到cn.edu.sdju.exp032包中,不改动Driver类的修饰符,则编译正确。说明public成员既可以被任何类使用。 b.将Bus类和Car类放置到cn.edu.sdju.exp032包中,将Driver类改为package型,则编译错误。再将Bus类和Car类放回cn.edu.sdju.exp031包中,则编译正确。说明包作用域成员只能在同一个包中被使用。 c.将Bus类和Car类放置到cn.edu.sdju.exp032包中,将Driver类改为protected型,则 编译错误。放回依旧错误。说明抽象类不能为protected类型。 d.将Bus类和Car类放置到cn.edu.sdju.exp032包中,将Driver类改为private型,则 编译错误。放回依旧错误。说明抽象类也不能为private类型。 ③LimitRun.java的代码: public class LimitRun { public static void main(String args[]) { } int id; for (int i = 0; i < 20; i++) { } id = ((int) (Math.random() * 1000) + 1); @SuppressWarnings(\) Bus vb = new Bus(\, id); if (id % 2 == 0) { } System.out.println(\ + id + \); System.out.println(\ + id + \); } else { 《面向对象程序设计》实验报告 6 } 图3-4运行结果 (3)关键代码: Person.java的代码: class Person { } class Student extends Person { public String name; public char sex; public int age; public Person(String name, char sex, int age) { } this.name = name; this.sex = sex; this.age = age; public String sno; public String classno; public void updateAge(int age) { } public String toString() { System.out.println(\ + name + \ + sex + \ + age this.age = age; 《面向对象程序设计》实验报告 7 } } + \ + sno + \ + classno + \); + \ + classno + \; return \ + name + \ + sex + \ + age + \ + sno Student(String name, char sex, int age, String sno, String classno) { } super(name, sex, age); this.sno = sno; this.classno = classno; public class TestStudentPerson { } public static void main(String args[]) { } Student a[] = new Student[3]; a[0] = new Student(\, 'M', 18, \, \); a[1] = new Student(\, 'F', 21, \, \); a[2] = new Student(\, 'F', 20, \, \); for (int i = 0; i < 3; i++) { } a[1].updateAge(21); a[i].toString(); 图3-5运行结果 (4)①在实现类rectangle中注释掉一个方法后进行编译,编译结果错误。因为rectangle是具体类,所以必需提供在接口声明的所有方法的实现。 ②在实现类rectangle中将各实现方法前的public修饰符去掉后编译,则编译错误。因为接口中声明的方法类型为public,不能降低能见度的继承方法。 ③将接口rec_Area_Peri中定义的两个方法前加上abstract修饰符再编译,对程序没影响。因为所有声明在接口中的方法默认为public和abstract,所以加不加abstract都一样。 ④不用单独的实现类rectangle,直接在主类classe TestInterface中实现那两个方法,修改后的程序代码如下: interface rec_Area_Peri { 《面向对象程序设计》实验报告 8 } int getArea(); int getPerimeter(); public class TestInterface implements rec_Area_Peri { } private int width; private int length; TestInterface(int w, int l) { } public int getArea() { } public int getPerimeter() { } public static void main(String args[]) { TestInterface rect = new TestInterface(10, 20); System.out.println(\矩形面积=\ + rect.getArea()); return (2 * (width + length)); return width * length; width = w; length = l; System.out.println(\矩形周长=\ + rect.getPerimeter()); } ⑤将接口rec_Area_Peri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序修改如下: interface rec_Area { } interface rec_Peri{ } public class TestInterface implements rec_Area,rec_Peri { int getArea(); int getPerimeter(); private int width; private int length; TestInterface(int w, int l) { } public int getArea() { } public int getPerimeter() { } public static void main(String args[]) { TestInterface rect = new TestInterface(10, 20); System.out.println(\矩形面积=\ + rect.getArea()); return (2 * (width + length)); return width * length; width = w; length = l; 《面向对象程序设计》实验报告 9 System.out.println(\矩形周长=\ + rect.getPerimeter()); } } 四、实验体会 通过本次实验我掌握了类的继承机制,熟悉了类的成员变量和方法的访问控制,方法的多样性,并且掌握了接口的定义方法。在实验过程中遇到些困难,也在同学讨论后解决并完成了。
共分享92篇相关文档