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(); // 打印学生对象的数量
}
}