收藏 分销(赏)

Java实验.doc

上传人:s4****5z 文档编号:8793415 上传时间:2025-03-02 格式:DOC 页数:12 大小:88KB
下载 相关 举报
Java实验.doc_第1页
第1页 / 共12页
Java实验.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
学院 应用数学学院 专业 学号 姓名 教师评定 实验题目 继承与接口 一、 实验目的与要求 二、 实验方案 三、 实验结果和数据处理 四、 结论 五、 问题与讨论 一、 实验目的与要求 实验目的: 1、掌握类的继承关系。 2、掌握接口的定义与使用。 实验要求: 按下列要求编写Java程序: 1、定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。 2、编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。 3、编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。 二、 实验方案 1、Java中可以采用接口处理互不相关的一些类,但这些类又具有相似的方法。接口是一系列常量和空方法的集合,它提供了多个类共有的方法,但不限制每个类如何实现这个方法。由于Java只支持单继承,不允许一个子类继承多个父类,但可以实现多个接口实现多继承的功能。 其定义格式如下: interface 接口名称 //定义接口 { final 数据类型 成员名称 = 常量; //数据成员必须赋初值 abstract 返回值的数据类型 方法名 (形参表); //抽象方法,在方法体里没有定义方法主体 } 接口的实现语法 Class 类名称 implements 接口A,接口B { } 2、类是具有相同属性及相同行为的一组对象,在面向程序设计中,它是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的对象,然后通过类对象去访问累的成员变量,去调用类的成员方法实现程序的功能。一个类可以创建多个类对象,它们具有相同的属性模式,但可以具有不同的属性值。Java程序为每一分类对象开辟内存空间,以便保存各自的属性值。在使用之前必须先声明,然后利用声明的类来声明变量,并创建对象。 类的定义语法: Class 类名称 { 数据类型 属性; //类的成员变量 返回值的数据类型 方法名称 (参数表) //类的方法 { 程序语句; return 表达式; } } 创建属于类的对象 类名 对象名 = new 类名( ); 对象的使用 访问属性:对象名.属性名; 访问方法:对象名.方法名( ); 3、构造函数与类具有相同的类名称,但没有返回值,构造函数是在创建对象时自动调用,并执行构造方法的内容。 构造方法的定义 Class 类名称 { 访问权限 类名称 (形参表) { 程序语句; } } 4、通过类的继承可以简化类的定义,扩展类的功能,但是java只支持单继承。Java继承只能直接继承父类中的公有属性和公有方法。 实现继承的格式 class 子类名 extends 父类 super 关键字 5、super关键字出现在子类中,而且使其调用父类中的构造方法,super主要的功能是完成子类调用父类中的内容,也就是调用父类中的属性和方法。 具体实现代码 定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。 interface printx { void printMyway(); } 编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。 class Rectangle implements printx // 定义矩形类 { double length; // 矩形长 double width; // 矩形宽 Rectangle(double x, double y) // 构造函数 { length=x; width=y; } public void printMyway() // 实现printMyway()方法 { System.out.println("边长分别为: "+length+" 、 "+width+"的矩形"); System.out.println("面积为: "+length*width); // 求矩形面积 System.out.println("周长为: "+2*(length+width)); // 求矩形周长 } } 编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。 class Square extends Rectangle // 定义正方形类并且继承矩形类 { Double d; Square(double x, double y) // 构造函数 { super (x,y); // 调用父类构造函数 } public void diagonal( ) // 计算正方形对角线长度方法 { d=Math.sqrt(length*length+width*width); System.out.println("对角线长为"+d); } } 主函数 TestClass public class TestClass { public static void main (String args[]) { Rectangle c1=new Rectangle(6,8); System.out.println (c1.getClass().getName()+" 矩形") ; // 获得当前类名 c1.printMyway(); Square c2=new Square(5,5); System.out.println (c2.getClass().getName()+" 正方形") ; // 获得当前类名 c2.printMyway(); c2.diagonal(); } } 完整程序 interface printx { void printMyway(); } class Rectangle implements printx { double length; double width; Rectangle(double x, double y) { length=x; width=y; } public void printMyway() { System.out.println("边长分别为: "+length+" 、 "+width+"的矩形"); System.out.println("面积为: "+length*width); System.out.println("周长为: "+2*(length+width)); } } class Square extends Rectangle { double d; Square(double x, double y) { super (x,y); } public void diagonal( ) { d=Math.sqrt(length*length+width*width); System.out.println("对角线长为"+d); } } public class TestClass { public static void main (String args[]) { Rectangle c1=new Rectangle(6,8); System.out.println (c1.getClass().getName()+" 矩形") ; c1.printMyway(); Square c2=new Square(5,5); System.out.println (c2.getClass().getName()+" 正方形") ; c2.printMyway(); c2.diagonal(); } } 三、 实验结果和数据处理 四、 结论 1、接口与一般类一样,本身也具有数据成员与方法,但数据成员一定要赋初值,并且之不能再更改,方法也必须是抽象方法,而没有一般的方法,其中abstract是可以省略的。接口中的抽象方法只做声明,而不定义处理方式。 2、类是有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的对象,然后通过类对象去访问累的成员变量,去调用类的成员方法实现程序的功能。一个类可以创建多个类对象,它们具有相同的属性模式,但可以具有不同的属性值。Java程序为每一分类对象开辟内存空间,以便保存各自的属性值。在使用之前必须先声明,然后利用声明的类来声明变量,并创建对象。 3、继承是将相关类组成层次结构,允许新类从已存在的类中派生,通过保留他们的属性和方法,并可以在子类中根据自己的需要添加新的属性和方法。 五、 问题与讨论 1、子类不继承父类构造函数,子类怎样调用父类的构造函数,即创建一个子类的对象时,首先执行父类构造函数,然后执行子类构造函数。 答:super关键字出现在子类中,而且是去调用父类中的构造方法,所以可以得出结论:super关键字的主要的功能是完成子类调用父类中的内容,也就是调用父类中的属性和方法,但是在调用父类的构造函数是,super必须出在子类构造函数的第一行。 super关键字不仅可以调用父类中的构造函数,也可以调用父类中的属性和方法,格式如下: super调用父类中的属性和方法格式 super.父类中的属性; super.父类中的方法(); 输出结果; 2、接口与类一样,那么接口可以和类一样允许接口与接口之间的继承吗? 答:同样,接口的扩展也可以通过关键字extends来实现,并且接口不像类一样只允许单继承,接口可以实现多继承。 接口继承语法: interface 子接口名称 extends 父接口1,父接口2,…… { final 数据类型 成员名称 = 常量; //数据成员必须赋初值 abstract 返回值的数据类型 方法名 (形参表); //抽象方法,在方法体里没有定义方法主体 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服