实验二 类定义和对象使用
1.定义一个描述人的Person类,该类就有
- 描述人属性:姓名、年龄、性别;
- 用来对属性初始化的构造方法(要体现构造方法重载);
- 用户获取属性值的getter方法和用于修改属性值的setter方法;
- 返回所有成员信息的toString()方法;
- 然后定义测试类TestPerson(只包含main方法的公有类,下同),创建Person对象调用其相应的方法。
package Work2;
public class TestPeople {
public static void main(String[] args) {
Person test = new Person();
test.allData();
System.out.println("------default-----");
System.out.println(test.getName());
System.out.println(test.getAge());
System.out.println(test.getSex());
System.out.println("-------Eve------");
test.allData("Eve","男",30);
System.out.println("------Beta-----");
test.setName("Beta");
test.setAge(20);
test.setSex("女");
test.allData();
}
static class Person{
private String name;
private String sex="男";
private int age=18;
public String getName() {
return name;
}
public void setName(String name1) {
name = name1;
}
public String getSex() {
return sex;
}
public void setSex(String sex1) {
sex = sex1;
}
public int getAge() {
return age;
}
public void setAge(int age1) {
age = age1;
}
public void allData(String name, String sex, int age) {
System.out.println("姓名为:"+name+"年龄为:"+age+"性别为:"+sex);
}
public void allData() {
System.out.println("姓名为:"+name+"年龄为:"+age+"性别为:"+sex);
}
}
}
2.定义一个长方体Cuboid类,该类具有
- 表示长方体的属性
- 用来对属性初始化的构造方法(要体现构造方法重载)
- 具有计算长方体表面积和体积的功能。
- 定义测试类TestCubiod,创建Cuboid对象调用其相应的方法。
package Work2;
public class TestCubiod {
public static void main(String[] args) {
Cubiod cube = new Cubiod();
System.out.println("-------默认-------");
System.out.println(cube.getV());
System.out.println(cube.getS());
System.out.println("-------初始化(归零)-------");
cube.setDefault();
System.out.println(cube.getV());
System.out.println(cube.getS());
System.out.println("-------初始化(改指定值)-------");
cube.setDefault(10,10,10);
System.out.println(cube.getV());
System.out.println(cube.getS());
}
static class Cubiod{
private int lenth=3;
private int width=2;
private int height=4;
public void setDefault(){
lenth = 0;
width = 0;
height = 0;
}
public void setDefault(int l,int w,int h){
lenth = l;
width = w;
height = h;
}
public int getV(){
return lenth*width*height;
}
public int getS(){
return 2 * (lenth*width + lenth*height + width*height);
}
}
}
3.定义一个表示一元二次方程ax^2+bx+c=0的QuadraticEquation类。该类包括
- 表示三个系统的私有成员变量a、b、c;
- 用于a、b、c的赋值的构造方法;
- 用于获得或设置a、b、c的getter方法和setter方法;
- 用于返回判别式(b^2-4ac)的值的方法getDiscriminant();
- 用于获取方程根的方法(该方法可以返回的根包括无解、一个解和两个解三种情况)。
- 然后定义测试类TestQuadEquation,创建QuadraticEquation对象调用其相应的方法。
package Work2;
public class TestQuadEquation {
public static void main(String[] args) {
QuadEquation A = new QuadEquation();
System.out.println("-----第一次测试-----");
A.setEquation(1,-7,12);
System.out.println("a,b,c分别为:"+A.getA()+" "+A.getB()+" "+A.getC());
System.out.println("判别式:" + A.getDiscriminant());
A.getRoot();
System.out.println("-----第二次测试-----");
A.setB(-2);
A.setC(1);
System.out.println("判别式:" + A.getDiscriminant());
A.getRoot();
System.out.println("-----第三次测试-----");
A.setB(1);
System.out.println("判别式:" + A.getDiscriminant());
A.getRoot();
}
static class QuadEquation{
private int a;
private int b;
private int c;
public void setEquation(int aa, int bb, int cc){
a = aa;
b = bb;
c = cc;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
public double getDiscriminant() {
return b*b - 4*a*c;
}
public void getRoot() {
double m = b*b - 4*a*c;
if (m > 0) {
double root1=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
double root2=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
System.out.println("方程的两个根为:"+root1+";"+root2);
}else if(m == 0){
double root=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
System.out.println("方程的根为:"+root);
}else{
System.out.println("方程无解");
}
}
}
}
4.定义表示二维空间点的Point类,该类包括:
- 表示点的属性;
- 用于对属性初始化的构造方法(要实现重载);
- 获取和修改属性的getter和setter方法;
- 返回以(x,y)格式表示点坐标的toString()方法;
- 实现计算两点之间距离的方法。
- 然后定义测试类TestPoint,创建Point对象调用其相应的方法。
package Work2;
import static java.lang.Math.*;
public class TestPoint {
public static void main(String[] args) {
Point p = new Point();
Point o = new Point();
p.setXY(2,3);
o.setXY();
System.out.println("p的x坐标与y坐标为:"+p.getX()+" "+p.getY());
System.out.println("o的x坐标与y坐标为:"+o.getX()+" "+o.getY());
p.setX(3);
p.setY(4);
System.out.println("更改后p的x坐标与y坐标为:"+p.getX()+" "+p.getY());
System.out.println("p坐标为"+p.toString());
System.out.println("p到o的距离为"+p.getDistance(o));
}
static class Point{
private int x = 0;
private int y = 0;
public void setXY(int xx, int yy){
x = xx;
y = yy;
}
public void setXY(){
x = 0;
y = 0;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point(" +
+ x +
","+ y +
')';
}
public double getDistance(Point b){
double s;
s = sqrt(pow(this.x-b.x,2)+ pow(this.y-b.y,2));
return s;
}
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)