




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 Java类继承实验4.1实验目的、内容及性质1熟悉Java类的继承机制;2掌握Java类中成员变量和方法的访问控制;3熟悉方法或构造方法多态性;实验性质:验证、必做实验学时:2学时4.2问题及思考1、 为什么需要继承? 子类从父类继承了什么成员?2.、如子类实例化,继承后的构造函数如何调用?为什么这样? 3、Java类继承本质?4.3实验指导1、继承 1)、继承语法 class 子类名 extends 父类 . 注意:一般称子类或派生类,父类也称为基类或超类。子类从父类继承了public以及protected成员(属性和函数),父类成员被继承到子类访问属性不改变.在Java中,任何一个类都是Object类的子类2)、继承下构造函数 当子类实例化,首先调用父类构造函数,其次调用子类本身构造函数 public Person(int z) this.z=z; 子类构造函数通过super()传实际参数给父类构造函数 public Student(int z) super(z);/super()放在子类构造函数第一句可执行语句 . 3)、函数重载:在一个类中,函数名称相同,但是形式参数的个数或形参类型不同,这样一组构成函数重载. public class Shape public double area(double r) return Math.PI*r*r; public double area(double w,double h) return w*h; public double area(double a,double b,double c) double s=(a+b+c)/2; return Math.Sqrt(s*(s-a)*(s-b)*(s-c); 4)、覆盖问题override 子类重写了一个从父类继承过来的函数与属性。重写函数访问属性不低于继承函数 注意: public void show() super.show();/调用父类中的同名函数 5)、以下是示例,请仔细研究import java.util.*;class Employee private String name; private double salary; public Employee() public Employee(String n, double s) name = n; salary = s; public String getName() return name; public double getSalary() return salary; public void raiseSalary(double byPercent) double raise = salary * byPercent / 100; salary += raise; class Manager extends Employee private double bonus; public Manager() super(); this.bonus = bonus; public Manager(String n, double s) super(n, s); this.bonus = 0; public double getSalary() double baseSalary = super.getSalary(); return baseSalary + bonus; public void setBonus(double b) bonus = b; public class ManagerTest public static void main(String args) / 创建一个新的经理并设置他的奖金 Manager boss = new Manager(陈鹏, 80000); boss.setBonus(5000); Employee staff = new Employee3; / 建立员工数组和经理一起填充 staff0 = boss; staff1 = new Employee(何恒, 50000); staff2 = new Employee(童同, 40000); / print out information about all Employee objects for (int i = 0; i staff.length; i+) Employee e = staffi; System.out.println(name= + e.getName()+ ,salary= + e.getSalary(); 4.4实践编程1、理解、回答并整理以下问题(非常重要)1)、为什么需要继承? 子类从父类继承了什么成员?有效地实现代码的复用性。public、protected成员。2) 、如子类实例化,父类是否需要实例化?如果需要实例化,则子类实例化时,父类以及子类实例化顺序如何?需要,先父类再子类。3) 继承后的子类构造函数如何定义以及传参数给父类的构造函数?父类与子类构造函数调用顺序如何?为什么这样?通过super关键词。先父类再子类。子类是继承父类的。4) 、Java类继承本质?子类从父类继承成员函数、成员变量是否会另外创建副本?子类实例化,系统自动创建一个父类实例化;不会。2、实现一个名为Person的类和它的子类Employee具体要求如下:(1)Person类中的属性有:姓名name(String类型),地址address(String类型),电话号码telphone(String类型);(2)Employee类中的属性有:办公室office(String类型),工资wage(double类型)(3)编写这两个类,及相应的测试代码。各个属性赋值在构造函数中完成。package Ex4_1;public class Person private String pname;private String paddress;private String ptel;public Person(String pname,String paddress,String ptel)this.pname=pname;this.paddress=paddress;this.ptel=ptel;public Person()public String getPname()return pname;public void setPname(String pname)this.pname = pname;public String getPaddress()return paddress;public void setPaddress(String paddress)this.paddress = paddress;public String getPtel()return ptel;public void setPtel(String ptel)this.ptel=ptel;public String toString() /outputreturn pname+ +paddress+ +ptel;package Ex4_1;public class Employee extends Person private String eoffice;private double ewage;public Employee(String pname,String paddress,String ptel,String eoffice,double ewage)super(pname,paddress,ptel);this.eoffice=eoffice;this.ewage=ewage;public Employee()super();public String getEoffice()return eoffice;public void setEoffice(String eoffice)this.eoffice=eoffice;public double getEwage()return ewage;public void setEwage(double ewage)this.ewage=ewage;package Ex4_1;public class Test public static void main(String args) Employee e1=new Employee(Peter,Street,123456789,M01,10000);System.out.println(e1.toString()+ +e1.getEoffice()+ +e1.getEwage();3 编写一个抽象的图形类Shape,里面有方法area()计算面积以及方法displayArea()显示面积,编写子类矩形类和三角型类分别实现两个方法package Ex4_2;public abstract class Shapepublic abstract double area();public abstract void displayArea();package Ex4_2;public class MyRectangle extends Shape private double w,h;public Rectangle(double w,double h)this.w=w;this.h=h;public double area()return w*h;public void displayArea()System.out.println(This rectangles area=+this.area();package Ex4_2;public class MyTriangle extends Shapeprivate double a,b,c;public Triangle(double a,double b,double c)this.a=a;this.b=b;this.c=c;public double area()double q=(a+b+c)/2;return Math.sqrt(q*(q-a)*(q-b)*(q-c);public void displayArea()System.out.println(This triangles area=+this.area();package Ex4_2;public class Test public static void main(String args) Shape t1=new Rectangle(10,5);t1.displayArea();Shape t2=new Triangle(3,4,5);t2.displayArea();4、编写一个完整的Java Application 程序。包含接口Shape,MyRectangle类,MyTriangle类及Test类,具体要求如下:、接口Shape:double area():求一个形状的面积 double perimeter ():求一个形状的周长、类MyRectangle:实现Shape接口,并有以下属性和方法: 属性width: double类型,表示矩形的长height: double类型,表示矩形的高 方法MyRectangle(double w, double h):构造函数 toString()方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0, area=2.0”、类MyTriangle:实现Shape接口,并有以下属性和方法: 属性x,y,z: double型,表示三角形的三条边s: 周长的1/2(注:求三角形面积公式为,s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法) 方法MyTriangle(double x, double y, double z):构造函数,给三条边和s赋初值。toString():输出矩形的描述信息,如“three sides:3.0,4.0,5.0,perimeter=12.0,area=6.0”、Test类作为主类要完成测试功能 生成MyRectangle对象 调用对象的toString方法,输出对象的描述信息package Ex4_4;public interface Shapepublic abstract double area();public abstract void displayArea();package Ex4_4;public class MyRectangle implements Shape private double w,h;public MyRectangle(double w,double h)this.w=w;this.h=h;public double area()return w*h;public double perimeter() return 2*w+2*h;public void displayArea()System.out.println(This rectangles area=+this.area();public String toString()return Rectangle: width=+w+ +height=+h+ +perimeter=+this.perimeter()+ +area=+this.area();package Ex4_4;public class MyTriangle implements Shapeprivate double a,b,c;public MyTriangle(double a,double b,double c)this.a=a;this.b=b;this.c=c;public dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心肌梗死试题及答案
- 技术知识培训交底课件
- 扫描仪的安装和使用课件
- 扩大安全培训课件
- 人工智能基础与应用-“新小职”AI技能提升教程 习题及答案汇 第1-8章
- 2025年矿工安全考试试题及答案
- 2025年杭州数学职称考试试题及答案
- 2025年色彩实践考试题目及答案
- 情景双师课件
- 人民调解实务考试及答案
- 办公软件培训课件
- 成人氧气吸入疗法-中华护理学会团体标准
- 2025年职业指导师(中级)考试试卷:职业指导师考试备考策略
- 2025年度辅警招聘考试题(含答案)
- 初三心理健康教育开学第一课
- 初一新生入学教育
- 卫生院健康检查管理制度
- 高二秋季开学第一课班会课件:启航高二把握未来
- 坐席岗位笔试题目及答案
- 2025年吉林省高考物理试卷(含答案解析)
- 2024陆上风电项目造价指标
评论
0/150
提交评论