java 語言的源代碼是以類為單位存放在文件中,已public修飾的類名須和存放這個類的源文件名一樣。而
一個源文件中只能有一個public的類,類名的首字母通常為大寫。
使用public修飾的類可以被外部程序使用,而不使用public修飾的類則不能被外部程序使用。
類中定義的變量,可以稱為類的‘’屬性property‘’,或‘’成員變量member variable'。
通過類可以自定義新的變量類型。這種新的自定義類型與數組類似,只是其成員的類型可以是各種不同的
基本或非基本類型,而不必像數組所有成員的類型都一致。
例如定義新類型book。
public class Book {
String bookName ;//書名
String firstAuthor;//書的第一作者
String authors;//書的其他作者
int bookNumber;//書的頁數
int bookSize;//書是多大的,例如32開,16開等
String language;//書的語言
}
定義完了就可以在其他的程序中使用Book這種類型。
可先聲明一個Book變量:Book math1; 再創建一個Book對象賦值給Book變量:math1=new Book()。
然后就可以使用math1這個Book變量了:math1.bookName="飛屋環球記";math1.bookNumber=56;
對於在另一個類中調用Book類時,默認情況下,類和類中使用的其他類的源文件要放在同一個目錄下。若在其他文件夾中
也可在代碼中注明路徑。
java編譯器會在找不到 .class文件但可以找到源文件的情況下,會自動對源文件(.java文件)進行編譯並使用
產生出來的.class文件。
引用外部的類,創建類對象object賦值給一個已聲名的引用reference,reference只是指向某個具體的object
的索引而已。所以一個object可以有多個reference,reference的性質同數組名,object的性質同數組元素。
如下創建的類BookShelf中science1和position都是引用,java會為每一個創建的對象賦初值。
package BookShelf;
import Book.Book;
public class BookShelf {
Book science1;
String position;
int floors;
}
當創建一個BookShelf對象時,引用的初始值為null,整型默認值為0.
public class library1 {
public static void main(String[] args){
BookShelf geography;
geography = new BookShelf();
System.out.println(geography.science1);
System.out.println(geography.position);
System.out.println(geography.floors);
}
上述輸出結果為:
null
null
0
當引用的值為null時,表示該引用目前不指向任何的對象,當使用值為null的引用時,就是在訪問一個不存在
的東西,這時會出現錯誤.
定義類時,可以為其賦初值
public class BookShelf {
Book science1=new Book();
String position="block 2";
int floors=4;
}
如上對BookShelf的屬性science1、position、floors都進行了賦初值,這樣在其他程序里定義BoolShelf對象時
其各屬性的初始值如下:
public static void main(String[] args){
BookShelf geography;
geography = new BookShelf();
System.out.println(geography.science1);
System.out.println(geography.position);
System.out.println(geography.floors);
System.out.println(geography.science1);
geography.science1=new Book();
System.out.println(geography.science1.bookName);
}
輸出結果為:
Book.Book@15db9742
block 2
4
Book.Book@15db9742 //這應該表示對象中屬性Book.Book的地址
道德經
在定義類時,可以自己引用自己,例:
public class Book {
String bookName="道德經" ;//書名
String firstAuthor="";//書的第一作者
String authors="朱熹";//書的其他作者
int bookNumber=5;//書的頁數
int bookSize=16;//書是多大的,例如32開,16開等
String language="chinese";//書的語言
Book firstPublication;
但是,在類Book中若為firstPublication附初值new Book(),則會造成死循環,出現錯誤:StackOverflowError.
