《面向对象程序设计的实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计的实验报告.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计的实验报告 面向对象程序设计 实验报告 学号:4100118 姓名:邢启晖 提交日期:2022-10-13 成绩: 东北大学秦皇岛分校 实验一类与对象 一、实验目的 1掌握类的声明。 2掌握对象的创建。 3掌握方法的定义和调用。 4掌握构造函数的使用。 二、实验内容 1编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 代码: package shiyan1; public class Main public static void ma
2、in(String args) Box box=new Box(); box.setDemo(122,132, 142); System.out.print(立方体的体积:); System.out.println(box.getArea(); class Box int length; int width; int heigth; Box() void setDemo(int length,int width,int heigth) this.length=length; this.width=width; this.heigth=heigth; float getArea() return
3、 length*width*heigth; 2将上题的方法setDemo改用构造函数实现初始化。 代码: package shiyan1; public class Main public static void main(String args) Box box=new Box(123,133,143); System.out.println(box.getArea(); class Box int length; int width; int heigth; Box(int length,int width,int heigth) this.length=length; this.widt
4、h=width; this.heigth=heigth; float getArea() return length*width*heigth; 三、思考题 1一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用? 答:不可以。局部变量。方法的形式参数不可以在方法之外使用。 2为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时 答:构造函数又称构造方法。它的特殊性在于,与普通方法不同,它的名字与类名相同,不返回结果,也不加void返回值,程序不能显示调用构造函数。 构造函数的作用是初始化对象,即在创建对象时被系统调用。 3编程
5、创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。并创建一个对象验证。 package shiyan1; public class Main public static void main(String args) Point point=new Point(); point.move(50, 50); point.print(); class Point int x,y; Point() this.x=0; this.y=0; void move(int x,int y) this.x=x
6、; this.y=y; void print() System.out.println(The location of the point is: x=+x+,y=+y+.); 4定义一个类实现银行帐户的概念,包括的变量有“帐号”和“存款余额”,包括的方法有“存款”、“取款”和“查询余额”。定义主类,创建帐户类的 public class Main public static void main(String args) BankAccount bankAccount=new BankAccount(123,1000); bankAccount.saveMoney(2000); System.
7、out.println(After saving 2000$,you have +bankAccount.checkBalance(); bankAccount.takeMoney(500); System.out.println(After taking 500$,you have +bankAccount.checkBalance(); bankAccount.takeMoney(5000); System.out.println(After taking 5000$,you have +bankAccount.checkBalance(); class BankAccount int a
8、ccount; int balance;/余额 BankAccount(int account,int balance) this.account=account; this.balance=balance; ; void saveMoney(int money)/存款 balance+=money; void takeMoney(int money) if(balance=money) balance-=money; else System.out.println(error,account:+account+,you can only take +balance); int checkBa
9、lance() return balance; 实验二继承与多态 一、实验目的 1掌握类的继承方法。 2掌握变量的继承和覆盖。 3掌握方法的继承、重载和覆盖。 4了解接口的实现方法。 二、实验内容 定义两个接口,其方法协议分别完成两个数的加法和减法操作,然后创建一个类实现这两个接口的方法。 代码: import java.util.Scanner; public class Main2 static Scanner cin=new Scanner(System.in); public static void main(Stringargs) int a,b; a=cin.nextInt();
10、b=cin.nextInt(); Add add=new Add(); Sub sub=new Sub(); System.out.println(a+b+=+add.f(a,b); System.out.println(a+-+b+=+sub.f2(a,b); interface Fun public abstract int f(int x,int y); interface Fun2 public abstract int f2(int x,int y); class Add implements Fun public int f(int x,int y) return x+y; cla
11、ss Sub implements Fun2 public int f2(int x,int y) return x-y; 思考题: 1子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么? 答:重写 2同名的不同方法共存的情况称为什么?如何区分这些同名方法? 答:重载方法的参数个数,类型 3创建一个类,声明一个无参数的构造函数,打印类已创建的信息;再重载一个具有String参数的构造函数,打印参数信息;并创建主类验证之。 public class Main public static void main(String args) MyTest mytest=new MyTest()
12、; String s=Hello!; MyTest mytest2=new MyTest(s); class MyTest MyTest() System.out.println(无参数构造函数,类已创建!); MyTest(String s) System.out.println(String参数构造函数,类已创建!且参数为:+s); 4定义一个矩形类,再定义接口EqualDiagonal,其中包含方法getDiagonal();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口EqualDiagonal。 代码: import java.util.Scanner; publi
13、c class Main static Scanner cin=new Scanner(System.in); public static void main(Stringargs) System.out.println(请输入正方形的边长:); double x=cin.nextDouble(); Square square=new Square(x); System.out.println(对角线=+square.getDiagonal(); System.out.println(面积=+square.getArea(); interface EqualDiagonal double getDiagonal(); class Rectangle double x,y,diagonal; class Square extends Rectangle implements EqualDiagonal Square(double x) this.x=x; public double getDiagonal() diagonal=Math.sqrt(x*x+x*x); return diagonal; public double getArea() return x*x;
限制150内