实验项目名称: 类与对象的定义与使用 |
实验目的及要求: [1]. 类的定义、对象的创建 [2]. 类中构造方法、get/set方法、toString方法的定义 [3]. 实例成员与静态成员的特点、定义与引用方法 [4]. 类及其成员的访问控制符的作用权限 |
实验原理: 在Java语言运行环境下,按要求完成程序的编辑、编译、连接和运行,直至取得正确的运行结果。 |
实验内容(方法和步骤): 【1】 编写一个Java应用程序,该程序中有3个类:Lader、Circle和主类A。 具体要求如下: [1]. Lader类具有类型为double的上底、下底、高、面积属性,具有返回面积的功能,包括一个构造方法对上底、下底、高进行初始化。 [2]. Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能,包括一个构造方法对半径进行初始化。 [3]. 主类A用来测试类Lader和类Circle的功能。 源代码: 1 class Lader{
2
3 double s,x,h,area;
4
5 double getarea(Lader l) {
6
7 area=((s+x)*h)/2;
8
9 return area;
10
11 }
12
13 Lader(double sd,double xd,double gao){
14
15 s=sd;
16
17 x=xd;
18
19 h=gao;
20
21 }
22
23 }
24
25 class Circle {
26
27 double r,c,a;
28
29 Circle(double cr){
30
31 r=cr;
32
33 }
34
35 double pi=3.1415926;
36
37 double cArea(Circle x) {
38
39 a= pi*r*r;
40
41 return a;
42
43 }
44
45 double cRound(Circle x) {
46
47 double d= 2*r*pi;
48
49 return d;
50
51 }
52
53 }
54
55 package Aa;
56
57 import java.util.Scanner;
58
59 public class A {
60
61 public static void main(String args[]) {
62
63 Lader l1 =new Lader(1,2,3); //初始化一个实例
64
65 Scanner sc=new Scanner(System.in); //手动输入梯形的值
66
67 System.out.print("梯形的上底:");
68
69 l1.s=sc.nextDouble();
70
71 System.out.print("梯形的下底:");
72
73 l1.x=sc.nextDouble();
74
75 System.out.print("梯形的高:");
76
77 l1.h=sc.nextInt();
78
79 System.out.println("题型的面积为"+l1.getarea(l1)+"。");//输出梯形面积
80
81
82 Circle c1=new Circle(0);//Initialize the class Circle
83
84 System.out.print("园的半径:");
85
86 c1.r=sc.nextDouble();
87
88 System.out.print("圆的面积:"+c1.cArea(c1)+"。");
89
90 System.out.print("圆的周长:"+c1.cRound(c1)+"。");
91
92 }
93
94 }
【2】 编写西游记人物类(XiYouJiRenWu): 属性:身高(height),名字(name),武器(weapon) 方法:显示名字(printName),显示武器(printWeapon) 在主类的main方法中创建二个对象:zhuBaJie,sunWuKong: 分别为他们的两个属性(name,weapon)赋值,最后分别调用printName,,printWeapon方法显示两个对象的属性值。 源代码: 1 package 实验报告2;
2
3 class XiYouJiRenWu {
4 public double height;
5 public String name;
6 public String weapon;
7
8 public XiYouJiRenWu(double cheight,String cname,String cweapon) {
9 height = cheight;
10 name = cname;
11 weapon = cweapon;
12 }
13
14 void printName() {
15 System.out.println("角色名字为:"+name);
16 }
17 void printWeapon() {
18 System.out.println("角色使用武器(老婆)为:"+weapon);
19 }
20 void printHeight() {
21 System.out.println("角色体长为:"+height);
22 }
23 void print() {
24 printName();
25 printWeapon();
26 printHeight();
27 }
28 }
29 public class diaoyong {
30 public static void main(String args[]) {
31 XiYouJiRenWu zhuBaJie=new XiYouJiRenWu(150,"猪八戒","九齿钉耙");
32 zhuBaJie.print();
33 XiYouJiRenWu sunWuKong=new XiYouJiRenWu(197,"孙悟空","如意金箍棒");
34 sunWuKong.print();
35 }
36 }
【3】 编写Java应用程序。首先定义一个描述银行账户的Account类, 成员变量“账号”和“存款余额”, 成员方法有“存款”、“取款”和“余额查询”。 其次,编写一个主类,在主类中测试Account类的功能。 源代码: 1 package 练习3;
2
3 class Account {
4 int id,pswd; //clients' card id and its pswd
5 double balance;//clients' balance
6 double x;
7 Account(int cid,int cpswd,double cbalance){
8 id = cid;
9 balance = cbalance;
10 }//构造方法
11 double deposit(Account a) {
12 balance +=x;
13 return balance;
14 }//存款
15 double withdraw(Account a) {
16 balance -=x;
17 return balance;
18 }//提现
19 }
20
21 import java.util.Scanner;
22 public class shixian {
23 public static void main(String[] args) {
24 Account jiaming = new Account(1,1,1);//第一步注册账号
25 Scanner sc=new Scanner(System.in); //用户信息
26 System.out.print("请设定用户名:");
27 jiaming.id=sc.nextInt();
28 System.out.print("请设置账号密码:");
29 jiaming.pswd=sc.nextInt();
30 System.out.print("请工作人员授权输入余额:");
31 jiaming.balance= sc.nextDouble();
32 //冗长的注册结束了(撒花),接下来开始激动人心的测试环节!
33 System.out.print("请输入账户和密码,用空格隔开^
");
34 int u1=sc.nextInt();
35 int u2=sc.nextInt();
36 if(!(u1==jiaming.id&&u2==jiaming.pswd)) {
37 System.out.print("输入有误,系统退出");
38 }
39 System.out.print("请键盘输入想要完成的功能:
1.存款
2.提现
0.退出
");
40 int m=sc.nextByte();
41
42 while(m!=0) {//这个while循环是实现循环输入,比如存款后,可以选择继续存款还是提现
43
44 if(m==1) {
45 System.out.println("请输入存款金额:
");
46 jiaming.x=sc.nextDouble();
47 System.out.println("您存款金额为"+jiaming.x+",账户当前余额为"+jiaming.deposit(jiaming));
48 System.out.println("请问您接下来想干嘛:
1.继续存款
2.提现
0.退出
");
49 }//输入存款金额后,调用Account类中的deposit方法,然后询问用户接下来操作
50
51 else if(m==2) {//提款模块
52 System.out.println("请输入提款金额:
");
53 jiaming.x=sc.nextDouble();
54
55 while(jiaming.x>jiaming.balance) {
56 System.out.println("账户余额不足,请重新输入");
57 jiaming.x=sc.nextDouble();
58 }//如果账户余额不足,则重复输入;
59 System.out.println("您提现金额为"+jiaming.x+",账户当前余额为"+jiaming.withdraw(jiaming));
60 System.out.println("请问您接下来想干嘛:
1.存款
2.继续提现
0.退出
");
61 }
62 if(m==0) {
63 System.out.println("感谢使用鸭,886");
64 break;
65 }//如果用户输入0,就退出系统了呀(还整得像那么回事)
66 else {
67 System.out.println("输入无效,请输入:
1.存款
2.继续提现
0.退出
");
68 }//输入其他的值不合法嗷┗|`O′|┛ !!!
69 m=sc.nextByte();//控制while循环
70 }//while终了
71 }//main的尾巴~
72 }//class shixian
【4】 编写Java应用程序。首先,定义一个时钟类—Clock, 三个int型成员变量分别表示时、分、秒, 一个构造方法用于对三个成员变量(时、分、秒)进行初始化, 一个成员方法show()用于显示时钟对象的时间。 定义一个主类—TestClass,在主类的main方法中创建多个时钟类的对象,使用这些对象调用方法show()来显示时钟的时间。 修改成员方法的访问控制符为“public”,再运行一次。 源代码: 【5】 编写Java应用程序。首先,定义描述学生的类—Student, 包括:学号(int)、姓名(String)、年龄(int)等属性; 二个方法:Student(int stuNo,String name,int age)用于对对象的初始化,outPut()用于输出学生信息。 定义一个主类—TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测试Student类的功能。 源代码: 【6】 编写Java应用程序。首先,定义一个Print类, 一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在控制台打印出小写的英文字母表。 定义一个主类—TestClass,在主类的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大小写英文字母表。 修改成员方法的访问控制符为“private”,再运行一次。 源代码: 【7】 按要求编写Java应用程序。创建一个叫做People的类: 属性:姓名、年龄、性别、身高, 行为:说话、计算加法、改名 编写能为所有属性赋值的构造方法; 创建主类:创建一个对象:名叫“张三”,性别“男”,年龄18岁,身高1.80; 让该对象调用成员方法:说出“你好!”,计算23+45的值,将名字改为“李四”。 源代码: 【8】按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第一个时调用无参数的构造方法,调用成员方法使其车牌为“9752”,并让其加速。 创建第二个时调用有参数的构造方法,使其车牌为“5086”,车速为150,载重为200,并让其减速。 输出两辆车的所有信息 源代码: |