Educoder-Java程式開發基礎-類和物件
阿新 • • 發佈:2021-07-13
# 構造方法
本關任務:編寫程式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(); // 列印學生物件的數量
}
}
```