java面向对象编程基础实验

java面向对象编程基础实验1 实验目的 1 掌握 Java 中类和对象的基本知识 2 理解 Java 中的继承 类 子类 接口 和多态机制 3 掌握 Java 中 this super 及访问限定符和特征限定符的用法 4

大家好,我是讯享网,很高兴认识大家。



1.实验目的

(1)掌握Java中类和对象的基本知识。

(2)理解Java中的继承(类,子类,接口)和多态机制。

(3)掌握Java中this、super及访问限定符和特征限定符的用法。

(4)应用Java的包的文件组织方式管理代码。

2.实验要求

在Eclipse下创建Practice1项目,对未有包名要求的题目统一按照实验题名建包,然后将本题源代码放在同一包下。对有包名要求的题目按照要求建包。作业提交时将Practice1项目下src文件包中的所有源码文件提交至码云oop_one项目代码仓库中。

3.实验题目

Exer1: 创建Person类,并设置name,sex及age三个private属性,设置无参构造方法和带参数的构造方法;设置setName(),setSex(),setAge()方法给三个属性赋值,并用getName(),getSex(),getAge()方法获取三个属性的值;重写父类(Object)的toString()方法,实现Person类对象的属性输出,注意toString()方法返回值类型为String。

基本要求:

  1. 设计CreatPerson类,使用无参构造方法创建Person类对象,用set*和get*方法完成属性初始化和输出。
  2. 使用有参构造方法创建Person类对象,并调用toString()方法完成属性输出。
 
讯享网 

运行编译,输出结果:

讯享网

Exer2: 设计一个用来描述汽车的类Car,使用类的非静态成员变量来表示汽车的车主姓名name、当前的速率speed:

基本要求:

  1. 创建构造函数为成员变量赋初值。
  2. 使用类的非静态成员方法来表示改车主姓名changeName操作, 并通过该方法显示修改后的车主名称。
  3. 使用类的非静态成员方法来表示改变汽车的速率changSpeed操作,并通过该方法显示修改后的车速。
  4. 使用类的非静态成员方法来表示停车stop操作,并通过该方法显示停车后的车速。
  5. 创建一个Car类的对象,初始状态时,车主名称是自己的名字,speed=0。
  6. 分别调用这三个方法,更改车名为朋友的名字,车速为20,停车车速为0,并且得到如下的结果:

                        java面向对象编程基础实验                    

 

 运行编译,输出结果:

讯享网

Exer3: 定义人类Human及其子类Child。其中Human具有姓名name、年龄age属性成员,具有无参和有参构造方法Human(String name, int age),其他方法有void walk(){System.out.println(name+“… ”)}和void eat() {System.out.println(name+“爱吃西瓜”)},Child子类还具有schoolName属性成员及其有参构造方法,具有void study() {System.out.println(name+“学习数学”)},且重写父类方法walk()。Human和Child的walk方法走路的方式分别是“稳健的走”和“蹦跳的走”。

基本要求:

  1. 在子类的构造方法中调用父类的有参构造方法
  2. 建立测试类,在测试类中完成以下操作
  3. 创建Human类对象h,调用它的方法walk(),eat()
  4. 创建Child类对象c,调用方法study(),walk()
  5. 将对象c的引用赋给h,观察h.walk(),h.eat()。h可以调用study()方法吗?为什么?
  6. 思考Human中如果没有无参构造函数可以吗?
 

编译运行,输出结果:

 

Exer 4: 对象的组合。现有一个Rectangle类,请设计一个柱形类Cuboid。

基本要求:

  1. 此类具有两个成员变量,(1)Rectangle类型的成员变量rect(长方体以长方形做底)和(2)height(柱形的高)。
  2. 此类应具有构造方法。
  3. 此类应具有求体积的方法getVolme()。
  4. 此类应具有设置和获得底的长度和宽度的方法:getBottomWidth()。

setBottomWidth(),

getBottomLength(),

setBottomLength()。

Rectangle的代码如下:

 

作答过程:

 

编译运行,输出结果:

 

Exer 5设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。

基本要求:

  1. 编写抽象类Animal

Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和动物种类名称。

  1. 编写模拟器类Simulator

该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类重写的cry()方法播放具体动物的声音、调用子类重写的getAnimalName()方法显示动物种类的名称。

  1. 编写Animal类的子类:Dog,Cat类
  2. 编写主类Application(用户程序)

在主类Application的main方法中至少包含如下代码:

Simulator simulator = new Simulator();

simulator.playSound(new Dog());

simulator.playSound(new Cat());

下图是Simulator、Animal、Dog、Cat的UML图。

 

 编译运行,输出结果:

 

Exer 6: edu.nwafu.data 包中编写图形抽象类Shape,包含一个常量PI和一个抽象方法getPerimeter()。Circle类和Rectangle类继承了抽象类Shape,Circle类包含一个属性radius,实现抽象方法getPerimeter(),覆盖方法toString()实现自定义圆的输出信息:半径为的圆周长是:;Rectangle类包含了两个属性length、width,实现抽象方法getPerimeter(),覆盖方法toString()实现自定义矩形的输出信息:长为宽为的矩形周长是:。

在edu.nwafu包中编写ShapeTest类是测试类,设计public void addOne(Shape shape)方法,实现如果传入的是Circle对象,则半径加1,如果传入的是Rectangle对象,长和宽分别加1; main()方法中要求构造Circle和Rectangle类的对象,并对toString和addOne方法进行测试。

(提示:instanceof运算符可以判断一个对象是否为某个类的实例)

Shape.java:

 

Circle.java:

 

Rectangle.java:

 

Example6.java,测试类:

 

编译运行,输出结果:

 

Exer 7 实现一个名为Person的类和它的子类Employee, Manager是Employee的子类,设计一个接口Add用于涨工资,接口中有一个抽象方法addVage()。普通员工一次能涨10%,经理能涨20%。

具体要求如下:

  1. Person类中的属性有:姓名name(String类型),地址address(String类型)并写出该类的构造方法;
  2. Employee类中的属性有:工号ID(String型),工资vage(double类型),工龄(int型),写出该类的构造方法;
  3. Manager类中的属性有:级别level(String类型),写出该类的构造方法;
  4. 编写一个测试类,产生一个员工和一个经理并输出其具有的信息, 之后给这两个人增加工资,然后再次输出信息。

Add.java

 

Person.java

 

Employee.java

 

Manager.java

 

测试类Exer7.java

 

编译运行,输出结果:


                    
小讯
上一篇 2025-01-01 18:09
下一篇 2024-12-25 20:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/7795.html