類和對象是 Java 面向?qū)ο缶幊痰暮诵母拍睿愂菍σ活愂挛锏某橄竺枋?,定義了事物的屬性(成員變量)和行為(方法);對象則是類的具體實例,是可操作的實體。掌握類和對象的創(chuàng)建方法,以及成員變量的調(diào)用規(guī)則,是編寫面向?qū)ο蟪绦虻幕A(chǔ)。
一、Java 類和對象的創(chuàng)建方法
(一)創(chuàng)建類:定義事物的模板
類的創(chuàng)建需使用class關(guān)鍵字,語法格式為:
修飾符 class 類名 { // 成員變量(屬性) // 方法(行為)}
修飾符:可省略或使用public(公開類,類名需與文件名一致)、private(私有類,僅內(nèi)部可見)等。
類名:遵循大駝峰命名法(首字母大寫,如Student、Car),需見名知意。
示例:定義一個Student類描述學(xué)生信息
public class Student { // 成員變量(屬性) String name; // 姓名 int age; // 年齡 String major; // 專業(yè) // 方法(行為,暫不定義具體內(nèi)容) void study() { System.out.println(name + "正在學(xué)習(xí)"); }}
(二)創(chuàng)建對象:實例化類的實體
對象是類的具體實例,通過new關(guān)鍵字創(chuàng)建,語法格式為:
類名 對象名 = new 類名 ();
示例:基于Student類創(chuàng)建對象
public class Main { public static void main(String[] args) { // 創(chuàng)建Student類的對象stu1 Student stu1 = new Student(); // 創(chuàng)建Student類的另一個對象stu2 Student stu2 = new Student(); }}
創(chuàng)建對象的過程可理解為 “根據(jù)圖紙(類)造房子(對象)”,每個對象擁有獨立的內(nèi)存空間,成員變量的值互不影響。
(三)對象的初始化:為屬性賦值
創(chuàng)建對象后需為成員變量賦值,常見方式有兩種:
直接賦值:通過對象名訪問成員變量并賦值
stu1.name = "張三";stu1.age = 20;stu1.major = "計算機(jī)科學(xué)";
通過構(gòu)造方法初始化:在類中定義構(gòu)造方法,創(chuàng)建對象時直接傳參賦值
// 在Student類中添加構(gòu)造方法public Student(String n, int a, String m) { name = n; age = a; major = m;}// 創(chuàng)建對象時直接賦值Student stu3 = new Student("李四", 21, "軟件工程");
構(gòu)造方法是與類名同名的特殊方法,無返回值,用于對象初始化,若未自定義,Java 會默認(rèn)生成無參構(gòu)造方法。
二、類的成員變量調(diào)用方式
成員變量是類中定義的屬性,需通過對象或類(靜態(tài)變量)調(diào)用,具體方式取決于變量的修飾符。
(一)實例變量:通過對象調(diào)用
未被static修飾的成員變量為實例變量,屬于對象私有,必須通過對象名調(diào)用,語法為:
對象名。成員變量名
示例:調(diào)用Student對象的實例變量
public class Main { public static void main(String[] args) { Student stu = new Student("王五", 19, "數(shù)學(xué)"); // 調(diào)用實例變量 System.out.println("姓名:" + stu.name); // 輸出"姓名:王五" System.out.println("年齡:" + stu.age); // 輸出"年齡:19" }}
(二)靜態(tài)變量:通過類名或?qū)ο竺{(diào)用
被static修飾的成員變量為靜態(tài)變量(類變量),屬于類本身,可通過類名直接調(diào)用(推薦),也可通過對象名調(diào)用,語法為:
類名。靜態(tài)變量名 或 對象名。靜態(tài)變量名
示例:在Student類中定義靜態(tài)變量并調(diào)用
public class Student { static String school = "陽光大學(xué)"; // 靜態(tài)變量(所有學(xué)生共享) // 其他成員變量和方法...}public class Main { public static void main(String[] args) { // 通過類名調(diào)用靜態(tài)變量(推薦) System.out.println("學(xué)校:" + Student.school); // 通過對象名調(diào)用靜態(tài)變量(不推薦,易混淆實例變量) Student stu = new Student(); System.out.println("學(xué)校:" + stu.school); }}
靜態(tài)變量被所有對象共享,修改后會影響所有對象,適合存儲類級別的公共信息(如學(xué)校名稱、系統(tǒng)版本)。
(三)私有成員變量:通過方法間接調(diào)用
被private修飾的成員變量為私有變量,無法直接通過對象名調(diào)用,需在類中定義getter方法(獲取值)和setter方法(修改值)間接訪問。
示例:訪問私有成員變量
public class Student { private String id; // 私有變量(學(xué)號) // getter方法:獲取id值 public String getId() { return id; } // setter方法:設(shè)置id值 public void setId(String newId) { id = newId; }}public class Main { public static void main(String[] args) { Student stu = new Student(); // 無法直接調(diào)用私有變量:stu.id = "2023001";(編譯報錯) // 通過setter方法設(shè)置值 stu.setId("2023001"); // 通過getter方法獲取值 System.out.println("學(xué)號:" + stu.getId()); // 輸出"學(xué)號:2023001" }}
私有變量的封裝是面向?qū)ο蟮闹匾匦?,可保護(hù)數(shù)據(jù)安全,僅允許通過指定方法修改。
三、注意事項
類名與文件名:public 類的類名必須與.java 文件名完全一致,否則編譯報錯。
對象的生命周期:對象不再被使用時,會被 Java 垃圾回收機(jī)制自動回收,釋放內(nèi)存。
成員變量的默認(rèn)值:未賦值的成員變量有默認(rèn)值(數(shù)值類型為 0,布爾類型為 false,引用類型為 null),局部變量(方法內(nèi)定義)無默認(rèn)值。
Java 類和對象的創(chuàng)建體現(xiàn)了面向?qū)ο蟮某橄笈c實例化思想,成員變量的調(diào)用則需區(qū)分實例變量、靜態(tài)變量和私有變量的訪問規(guī)則。掌握這些基礎(chǔ)操作,是理解繼承、多態(tài)等高級特性的前提,初學(xué)者應(yīng)通過多編寫類和對象的實例代碼,加深對面向?qū)ο缶幊痰睦斫狻?/p>