文档详情

实验:类的继承、抽象类、接口.doc

发布:2017-08-27约9.43千字共9页下载文档
文本预览下载声明
实验: 类的继承、抽象类、接口 一、课后习题(思考、简要回答、举例) 1、 什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来 什么好处?什么是单重继承?什么是多重继承? 2、 “子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否 正确?为什么? 3、什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同? 4、 什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点? 5、 父类对象与子类对象相互转化的条件是什么?如何实现它们的相互转化? 6、什么是包?它的作用是什么? 7、 一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象 方法? 二、基本实验 1. 进一步理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。 Java 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 2. 创建公共类test (1)编写程序文件test.java,源代码如下。 public class test { protected String xm; //具有保护修饰符的成员变量 protected int xh; void setdata(String m,int h) //设置数据的方法 { xm =m; xh = h; } public void print() //输出数据的方法 { System.out.println(xm+, +xh); } } 3.创建继承的类 (1)程序功能:通过test 类产生子类subtest,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。 (2)编写subtest.java 程序,源代码如下。 class test extends subtest{ protected String xy; protected String xi; public static void main(String args[]) { test p1 = new test(); p1.setdata(zhang,12321) ; p1.print(); subtest s1 = new subtest() ; s1.setdata(郭丽娜,12345); //调用的成员方法是哪个类的? s1.xy=信息工程学院; //访问的成员变量是哪个类的? s1.xi=软件工程系; //访问的成员变量是哪个类的? s1.print(); System.out.print(s1.xm+, +s1.xy+, +s1.xi); } } 3.了解成员变量的隐藏方式 所谓隐藏是指子类重新定义了父类中的同名变量,请定义Point类和Line类,在子类Line 中重新定义x,y,隐藏父类Point 中的两个成员变量x 和y。并编写测试程序验证子类执行自己的方法时,操作的是子类的变量,子类执行父类的方法时,操作的是父类的变量。给出执行结果和自己的解释。并通过本实验注意: 在子类中要特别注意成员变量的命名,防止无意中隐藏了父类的关键成员变量,这有可能给程序带来麻烦。 4.了解成员方法的覆盖方式 (1)方法覆盖的定义与作用 通过继承子类可以继承父类中所有可以被子类访问的成员方法,但如果子类的方法与父类方法同名,则不能继承,此时称子类的方法覆盖了父类的方法,简称为方法覆盖(override)。方法覆盖为子类提供了修改父类成员方法的能力。例如,子类可以修改层层继承下来的Object 根类的toString 方法,让它输出一些更有用的信息。下面的程序显示了在子类Circle 中添加toString 方法,用来返回圆半径和圆面积信息。 (2)编写覆盖Object 类toString 方法的程序文件LX.java,源代码如下。 class Circle { private int radius; Circle(int r) { setRadius(r); } public void setRadius(int
显示全部
相似文档