实验四 类和对象
一、实验目的
1.学习类的一般结构和类的定义。
2. 学习类的成员变量和成员方法的声明格式。
3. 学习对象的创建和调用对象的成员变量和成员方法。
4. 理解和学习类的构造方法的作用。
二、实验类型及课时
验证/设计/综合:验证;课时:2。
三、实验环境
装有JAVA语言工具软件 (Eclipse)的微机若干
四、实验内容
1、定义一个Student类,包含的内容如下:
成员变量——姓名、性别、班干部否、数学、语文、外语;
成员方法——求总分、求平均分。
编程实现这个类,利用键盘输入三门课的成绩并调用相应的计算总分和平均分,输出结果。
源码:
package work02;
import java.util.Scanner;
// 定义一个测试类
public class StudentTest {
public static void main(String[] args) {
// 创造一个对象
Student stu = new Student();
Scanner cc = new Scanner(System.in);
System.out.println("请输入学生姓名:");
stu.name = cc.next();
System.out.println("请输入学生性别:");
stu.sex = cc.next();
System.out.println("请输入学生是否为班干:");
stu.isBan = cc.next();
System.out.println("请输入学生数学成绩为:");
stu.math = cc.nextFloat();
System.out.println("请输入学生语文成绩为:");
stu.chinese = cc.nextFloat();
System.out.println("请输入学生英语成绩为:");
stu.english = cc.nextFloat();
stu.sumSorce();
stu.average();
}
}
class Student{
// 成员变量
String name; // 姓名
String sex; // 性别
String isBan; // 是否为班干
double math; //数学成绩
double chinese; //语文成绩
double english; //英语成绩
// 成员方法
// 求总分
public void sumSorce() {
double sum = math + chinese + english;
System.out.println(name + "总成绩为:" + sum);
}
// 求平均分
public void average() {
double average = (math + chinese + english) / 3;
System.out.println(name + "平均成绩为:" + average);
}
}
2、定义一个“点”(Point)类用来表示三维空间的点(有三个坐标)。要求如下:
可以生成具有特定坐标的点对象(利用构造方法)。
提供可以设置三个坐标的方法。
提供可以计算该“点”到某点距离平方的方法。
编写程序验证上述三条。
源码:
package work02;
import java.util.*;
public class PointTest {
public static void main(String[] args) {
Point p = new Point(0, 0, 0);
p.distance(1,1,0);
}
}
class Point {
double x; // x坐标
double y; // y坐标
double z; // z坐标
public Point(double x,double y,double z) {
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public double getZ() {
return z;
}
public void setPoint(double x,double y,double z) {
this.x = x;
this.y = y;
this.z = z;
}
// 计算一个点到该点的距离
public void distance(double x,double y,double z) {
double distance;
// 假设某点坐标为(0,0,0)
Scanner sc = new Scanner(System.in);
System.out.println("请输入该点的x坐标:");
double x1 = sc.nextDouble();
System.out.println("请输入该点的y坐标:");
double y1 = sc.nextDouble();
System.out.println("请输入该点的z坐标:");
double z1 = sc.nextDouble();
distance = Math.sqrt((z-z1)*(z-z1)+Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1))*Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)));
System.out.println("("+x+","+y+","+z+")" + "到("+x1+","+y1+","+z1+")的距离为:" + distance );
}
}
3、写一个如图所示的风扇类Fan,其有speed,on,radius和color属性以及相应的取值和设值方法,toString方法应返回由所有属性的值所构成的字符串。另写一测试类测试该风扇类。
源码:
package work02;
public class FanTest {
public static void main(String[] args) {
Fan fan1 = new Fan();
fan1.setAll(10,true, 30, "白色");
System.out.println(fan1.toString());
}
}
class Fan {
int speed;
boolean on;
double radius;
String color;
public int getSpeed() {
return speed;
}
public double getRadius() {
return radius;
}
public String getColor() {
return color;
}
public boolean isOn() {
return on;
}
public void setAll(int speed,boolean on,double radius,String color) {
this.speed = speed;
this.on = on;
this.radius = radius;
this.color = color;
}
public String toString() {
String str = "转速为:" + speed + "rad/s;\r\n"
+ "运行状态为:" + on + "状态;\r\n"
+ "风扇片叶半径为:" + radius + "cm;\r\n"
+ "风扇颜色为:" + color ;
return str;
}
}
4、在程序中定义一个Student类,Student类有三个构造方法,分别对不同的属性进行初始化,按模版要求将【代码1】~【代码5】替换为相应的Java程序代码,使之输出如图所示的结果。
//文件名:Student.java
public class Student {
String name;
int age;
public Student() {
System.out.println("Student()构造方法被调用");
}
【代码1】 // 定义一个Student类构造方法,该方法接收一个字符串参数,在方法体中,把该参数赋给name属性,并显示“Student(String name)构造方法被调用”
public Student(String name){
this.name = name;
System.out.println("Student(String name)构造方法被调用");
}
【代码2】 // 定义一个Student类构造方法,该方法接收一个字符串参数与一个整型参数,在方法体中,把该字符串参数赋给name属性,把整型参数赋给age属性,并显示“Student(String name,int age)构造方法被调用”
public Student(String name,int age){
this.name = name;
this.age = age;
System.out.println("Student(String name,int age)构造方法被调用");
}
【代码3】 //创建Student类的一个对象s1,不传参数
Student s1 = new Student();
【代码4】 //创建Student类的一个对象s2,传入一个参数“张三”
Student s1 = new Student(“张三”);
【代码5】 //创建Student类的一个对象s3,传入一个参数“李四”和15
Student s1 = new Student(“张三”,15);
}
}
五、实验报告要求
1. 整理实验结果。
2. 小结实验心得体会。