实验二 类定义和对象使用

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();
    }


    //创建Person类
    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);//两个解:3和4
        //查询此时a,b,c的值:
        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);//此时有唯一解: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;
        }
        
        //a的获取及设置
        public int getA() {
            return a;
        }
        public void setA(int a) {
            this.a = a;
        }
        //b的获取及设置
        public int getB() {
            return b;
        }
        public void setB(int b) {
            this.b = b;
        }
        //c的获取及设置
        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();//把o设为原点。

        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坐标为"+p); 两种写法是等价的,为什么?

        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;
        }

        //y的获取及设置
        public int getX() {
            return x;
        }
        public void setX(int x) {
            this.x = x;
        }
        //y的获取及设置
        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;
        }
    }
}

a4f4eaf233edd46258647817499fc67f342039238

原文地址:http://www.cnblogs.com/nekodream/p/16796457.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性