java類 一、類和對象 類(class)可以看成對具體事物的抽象特征提取。比如:人這個類,擁有器官的屬性、擁有走路、勞動、吃喝玩樂的行為等。 對象(Object, instance)可以看成具體的事物,就是類的實例。比如:小明這個人,就是人類的一個實例。 二、類 1. 類的定義 [修飾符1 修飾符 ...
java類
一、類和對象
類(class)可以看成對具體事物的抽象特征提取。比如:人這個類,擁有器官的屬性、擁有走路、勞動、吃喝玩樂的行為等。
對象(Object, instance)可以看成具體的事物,就是類的實例。比如:小明這個人,就是人類的一個實例。
二、類
1. 類的定義
[修飾符1 修飾符2...] class 類名 { ... }
- 舉個粒子:
public class Student { // 屬性:成員變數 int id; String name; String sex; int age; // 行為:方法 void selfIntroduce() { System.out.printf("大家好,我是一名學生。我叫%s,今年%d歲,是一名%s生,我的學號是%d,請大家多多關照。\n", name, age, sex, id); } void study() { System.out.println("我正在學習..."); } void speak(String s) { // s為局部變數 System.out.println(s); } }
2. 類的成員
(1)屬性:變數(field)
- 成員變數:在類中,有初始值
- 局部變數:在方法中
(2)行為:方法(method)
方法想必都很熟悉了,這裡就不多介紹。
(3)構造器:構造方法
構造方法與普通方法不同,構造方法無返回值類型,但有返回值,返回值是新建對象(new)時的引用地址;當然也有相同之處,都有參數列表,也都可以進行重載。
每一個類都有構造方法,當沒有顯示定義構造方法時,系統預設會給類一個無參的構造方法。
構造方法定義:
類名(參數列表) {
...
}
- 舉個李子:
public class Point { String name = null; float x; // x坐標 float y; // y坐標 Point() { // 預設構造方法 } Point(float a, float b) { // 構造方法重載 x = a; y = b; } Point(float a, float b, String s) { // 構造方法重載 x = a; y = b; name = s; } void showPoint() { // 顯示點的信息 if(name != null) System.out.printf("%s(%.2f, %.2f)\n", name, x, y); else System.out.printf("p(%.2f, %.2f)\n", x, y); } double distance(Point p) { //計算兩點距離 return Math.sqrt(Math.pow((p.x - x), 2) + Math.pow((p.y - y), 2)); } }
三、對象
1. 聲明對象
類名 對象名;
2. 創建對象
對象名 = new 類名(參數列表);
3. 參數傳值
基本數據類型:傳值,是指具體數字或字元串,所以變數的內容不會被修改。
引用數據類型:傳值,是指引用值,也就是地址,所以變數的內容可能被修改。
- 舉個慄子:
class E { public static void main(String args[]) { Point o = new Point(); // 新建對象,使用無參構造方法 o.x = 0; o.y = 0; o.name = "O"; Point a = new Point(3, 4, "A"); // 新建對象,使用重構的構造方法 o.showPoint(); a.showPoint(); System.out.printf("d(OA) = %.2f\n", a.distance(o)); } }
四、組合類型
——A類中聲明B類的對象b作為自己的成員變數
1. 類組合對象
當在類中聲明其他類的對象作為自己成員變數時,要麼不使用new關鍵字新建對象;要麼聲明和新建放在同個語句中。
- 再舉個慄子:
class Circle { Point o; // Right // o = new Point(0, 0, "O"); // Error // Point oo = new Point(0, 0, "O");// Right float r; // Right // r = 5; // Error // float rr = 5; // Right Circle() { // 預設構造方法 } Circle(Point O, float R) {// 重載構造方法 o = O; r = R; } void getCenterPoint() { // 獲取圓心信息 o.showPoint(); } double area() { // 計算圓面積 return Math.PI*Math.pow(r, 2); } }
class E { public static void main(String args[]) { Point o = new Point(0, 0, "O"); // 新建Point對象,使用重構的構造方法 Circle c = new Circle(o, 8); // 新建Circle對象,使用重載的構造方法 c.getCenterPoint(); // 獲取圓心信息 System.out.printf("Area: %.2f", c.area()); // 計算圓o的面積 } }
2. 組合類型的一些規則
- 類方法只能操作類變數
- 實例方法可以操作類變數、實例變數
- 類只能調用類方法、類變數
- 對象可以調用類方法、實例方法、類變數、實例變數