標籤:
當在一個源檔案中定義多個類,並且還有import語句和package語句時,要特別注意這些規則:
- 一個源檔案中只能有一個public類。
- 一個源檔案可以有多個非public類。
- 源檔案的名稱應該和public類的類名保持一致。例如:源檔案中public類的類名是Employee,那麼源檔案應該命名為Employee.java。
- 如果一個類定義在某個包中,那麼package語句應該在源檔案的首行。
- 如果源檔案包含import語句,那麼應該放在package語句和類定義之間。如果沒有package語句,那麼import語句應該在源檔案中最前面。
- import語句和package語句對源檔案中定義的所有類都有效。在同一源檔案中,不能給不同的類不同的包聲明。
- 類有若干種存取層級,並且類也分不同的類型:抽象類別和final類等。這些將在後續章節介紹。
- 除了上面提到的幾種類型,Java還有一些特殊的類,如內部類、匿名類。
一個簡單的例子
在該例子中,我們建立兩個類 Employee 和 EmployeeTest,分別放在包 p1 和 p2 中。
Employee類有四個成員變數,分別是 name、age、designation和salary。該類顯式聲明了一個構造方法,該方法只有一個參數。
在Eclipse中,建立一個包,命名為 p1,在該包中建立一個類,命名為 Employee,將下面的代碼複製到源檔案中:
1 package p1; 2 public class Employee{ 3 String name; 4 int age; 5 String designation; 6 double salary; 7 // Employee 類的構造方法 8 public Employee(String name){ 9 this.name = name;10 }11 // 設定age的值12 public void empAge(int empAge){13 age = empAge;14 }15 // 設定designation的值16 public void empDesignation(String empDesig){17 designation = empDesig;18 }19 // 設定salary的值20 public void empSalary(double empSalary){21 salary = empSalary;22 }23 // 輸出資訊24 public void printEmployee(){25 System.out.println("Name:"+ name );26 System.out.println("Age:" + age );27 System.out.println("Designation:" + designation );28 System.out.println("Salary:" + salary);29 }30 }
程式都是從main方法開始執行。為了能運行這個程式,必須包含main方法並且建立一個對象。
下面給出EmployeeTest類,該類建立兩個Employee對象,並調用方法設定變數的值。
在Eclipse中再建立一個包,命名為 p2,在該包中建立一個類,命名為 EmployeeTest,將下面的代碼複製到源檔案中:
1 package p2; 2 import p1.*; 3 public class EmployeeTest{ 4 public static void main(String args[]){ 5 // 建立兩個對象 6 Employee empOne = new Employee("James Smith"); 7 Employee empTwo = new Employee("Mary Anne"); 8 // 調用這兩個對象的成員方法 9 empOne.empAge(26);10 empOne.empDesignation("Senior Software Engineer");11 empOne.empSalary(1000);12 empOne.printEmployee();13 empTwo.empAge(21);14 empTwo.empDesignation("Software Engineer");15 empTwo.empSalary(500);16 empTwo.printEmployee();17 }18 }
編譯並運行 EmployeeTest 類,可以看到如下的輸出結果:
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0
系列文章:
Java知多少(1)語言概述
Java知多少(2)虛擬機器(JVM)以及跨平台原理
Java知多少(3) 就業方向
Java知多少(4)J2SE、J2EE、J2ME的區別
Java知多少(5) Java開發環境的搭建
Java知多少(6)第一個程式樣本
Java知多少(7)類與對象
Java知多少(8)類庫及其組織圖
Java知多少(9) import及Java類的搜尋路徑
Java知多少(10)資料類型及變數
Java知多少(11)資料類型轉換
Java知多少(12)運算子
Java知多少(13)流程式控制制
Java知多少(14)數組
Java知多少(15)字串
Java知多少(16)StringBuffer與StringBuider
Java知多少(17)強調一下編程風格
Java知多少(18)類的定義及其執行個體化
Java知多少(19)存取修飾詞(存取控制符)
Java知多少(20)變數的範圍
Java知多少(21)this關鍵字詳解
Java知多少(22)方法重載
Java知多少(23)類的基本運行順序
Java知多少(24)封裝類、拆箱和裝箱詳解
Java知多少(25)再談Java包
Java知多少(26)源檔案的聲明規則
Java知多少(26)源檔案的聲明規則