Educoder-Java程序开发基础-类和对象

构造方法

  本关任务:编写程序Point.java,定义一个Point类,表示二维平面上的“点”,在类中定义一个成员方法 getDistance用以返回该点到原点的距离,在main方法中,创建一个Point对象,并打印出该点到原点的距离


public class Point {    // 定义一个类表示二维平面上的“点”(Point)
    int x;
    int y; // 定义整型成员变量y,表示该点y轴坐标值
    double getDistance() { // 定义成员方法,获取该“点”到原点的距离
        double distance = Math.sqrt(x*x + y*y); // Math.sqrt()方法的作用是开根号
        return distance;   // 返回distance的值
    }
    public static void main(String[] args) {
        Point p = new Point(); // 创建一个Point对象表示一个点,该点的坐标是(3,4)
        p.x=3;p.y=4;
        System.out.println(Math.sqrt(p.x*p.x+p.y*p.y));    // 打印出点p到原点的距离
    }
}

Java程序运行时的内存分析

本关任务:定义一个类Line,表示二维平面上的“直线”。定义Point成员变量startPoint和endPoint分别表示直线的起点和终点。定义构造方法,参数有四个,分别是这两个点的x、y轴坐标值。定义构造方法,参数是两个Point类型变量。定义一个成员方法 getLength(),方法可以返回该直线的长度。在main方法中,分别通过不同的构造方法创建两个Line对象,并打印出它们的长度。Point类已给出

class Point {
    int x;
    int y;
    Point(int x1, int y1) { //构造方法,和类同名
        this.x = x1;
        this.y = y1;
    }
    void setX(int x1) {
        this.x = x1;
    }
    void setY(int y1) {
        this.y = y1;
    }
    double getDistance() {
        double distance = 0;
        distance = Math.sqrt(x*x + y*y); //数学类Math的静态方法sqrt:开根号
        return distance;
    }
    public static void main(String[] args) {
        Point p = new Point(1,1); //创建了一个点对象,x轴=1,y轴=1
        System.out.println(p.getDistance());
    }
}

class Line { // 定义一个类表示二维平面上的“直线”(Line)
    Point startPoint;
    Point endPoint; // 定义Point类型的成员变量endPoint,表示该直线的终点
    Line(Point p1, Point p2) { // 定义构造方法1,以初始化起点和终点
        startPoint = p1;
        endPoint = p2;
    }
    Line(int x1, int y1, int x2, int y2) { //定义构造方法2
        startPoint = new Point(x1,y1); // 通过起点坐标x1,y1和终点坐标x2,y2初始化Line的成员变量
        endPoint = new Point(x2,y2);
    }
    double getLength() {
        int x = startPoint.x - endPoint.x;
        int y = startPoint.y - endPoint.y;
        double length = Math.sqrt(x*x+y*y); // 通过Math.sqrt()方法求直线的长度
        return length;
    }
    public static void main(String[] args) {
        Point p1 = new Point(1,1);
        Point p2 = new Point(2,2);
        Line line1 = new Line(p1,p2); // 根据p1,p2创建并初始化一个Line对象
        System.out.println(line1.getLength());
        Line line2 = new Line(3,3,4,4); // 通过构造方法2创建一个表示(3,3)和(4,4)之间的直线。
        System.out.println(line2.getLength());
    }
}

静态修饰符

  本关任务:定义一个类Student,表示“学生”。定义表示年龄和姓名的成员变量age和name。定义有二个参数的构造方法,参数分别是age和name;定义只有一个参数的构造方法,参数是age;定义无参的构造方法。定义打印学生年龄和姓名信息的方法printInfo。定义静态成员变量count,用以存放创建的学生对象的数量,定义静态成员方法printCount,用以打印学生对象的数量。在main方法中创建两个学生对象,然后打印这两个学生的信息,并打印学生的数量

public class Student {
    int age;
    String name;
    static int count = 0;  // 定义静态成员变量count,用以存放创建的学生对象数量
    public Student() {
        System.out.println("调用无参的构造方法");
        count++;  // 静态成员变量count自增1,表示新创建了一个学生对象
    }
    public Student(int age) {
        Student s1 = new Student();  //此处调用无参的构造方法
        System.out.println("调用只有一个参数的构造方法");
        this.age = age;
    }
    public Student(int age, String name) {
        Student s2 = new Student(age);  //此处调用只有一个参数的构造方法
        System.out.println("调用有两个参数的构造方法");
        this.name = name;  //初始成员变量name
        this.age = age;
    }
    public void printInfo() { //定义成员方法printInfo(),用以打印学生信息
        System.out.println(this.name + "的年龄是" + this.age);
    }
    static void printCount() {
        System.out.println("学生的数量是"+count);  // 打印学生对象的数量
    }
    public static void main(String[] args) {
        Student s1 = new Student(20, "张三");
        Student s2 = new Student(20, "张三");  //创建学生对象:张三, 20岁
        s1.printInfo();
        s2.printInfo();  // 打印学生s2的信息
        printCount();  // 打印学生对象的数量
    }
}
posted @ 2021-07-13 16:10  颜骏  阅读(576)  评论(0编辑  收藏  举报