上節課給大家留下一個問題,計算機要描述的是現實世界。光有基本數據類型,是不能滿足我們的需要的。在這個大千世界里,任何東西都可以看做成對象,它們當然不能都是整數和文字了。現在學習java的同學,一般會看到一些java的教程里寫的一個日期的例子。這個例子是個典型的例子。你們想啊,日期里面有很多屬性啊,像是年,月,日。基本類型的數據就不能很好的描述它。就像是人,是一個類型。人有很多屬性,頭,軀干,四肢,這樣的話,我們就更難用基本類型來描述了。
我們還是看看這個日期的例子吧!
public class MyDate {
private int day; //日
private int month; //月
private int year; //年
public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public MyDate(MyDate date) {
this.day = date.day;
this.month = date.month;
this.year = date.year;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public MyDate addDays(int more_days) {
MyDate new_date = new MyDate(this);
new_date.day = new_date.day + more_days;
return new_date;
}
public void print() {
System.out.println("MyDate: " + day + "-" + month +
"-" + year);
}
}
在上次課的那個例子里我們已經看到了,class關鍵字后面是個類名。這個類名就是MyDate。MyDate 這個類里面定義了3個屬性,4個方法,2個構造函數。因為還沒有講到這些概念,目前說還是有點超前。我還是先來講些理論的東西。
理論闡述:
類描述了同一對象都具有的數據和行為。Java語言中的類將這些數據和行為進行封裝,形成了復合數據類型。創建一個新類,就是創建了一種新的數據類型。在程序中,類只定義一次,而用new運算符可以實例化同一個類的一個或多個對象。比如人是一個類,每一個人就是一個對象。那當然是人定義一次,對象可以new出很多對象了。但是這些具體的人,都具有同樣的特征(數據和行為)。
Java的類里面有3個東西,看下面:
class 類名 {
聲明屬性;
聲明構造函數;
聲明方法;
}
剛才講了,類不是要描述現實的數據和行為嗎?在這里屬性就是要描述封裝的數據,方法就是描述行為。構造函數嘛,是在new的運算符后面的,當然是構造對象的了,要不怎么能叫構造函數呢!
順便說一下,那兩個屬性的前面有一個private 那是權限修飾符。意思是私有的也就是別人不能用。Java語言用這種權限修飾符實現封裝。不想C語言的結構體,都是公有的屬性,那樣是不安全的。就像是人有五臟六腑,那些東西就是私有的。怎么能讓誰都碰呢?這就是面向對象的一個重要的概念叫做封裝。面向對象一共有三個重要特征(封裝,繼承,多態)我們以后會學到的。
所以,剛才MyDate那個類里面,有3個屬性 int類型的day,month,year .4個方法
setDay(int day),getDay() , addDays(int more_days), print().還有兩個構造函數。
看下面的例子如何調用這個類的方法的:
public class TestMyDate {
public static void main(String[] args) {
MyDate my_birth = new MyDate(22, 7, 1964); //通過第一個構造函數new了一個叫my_birth的對象,并在參數里面賦值
MyDate the_next_week = my_birth.addDays(7); //這個對象調用了addDays(int more_days)的方法,賦值給the_next_week的變量
the_next_week.print(); //調用print()方法
}
} 點擊此處下載源碼
調用一個類的方法,實際上是進行對象之間或用戶與對象之間的消息傳遞。
實踐:
1、 編譯上述兩個類 ,直接編譯TestMyDate.java就行。還記得怎么做嗎?進入DOS界面,到你存放這兩個文件的目錄下,敲javac TestMyDate.java
2、 然后敲 java TestMyDate 就OK了。
觀察結果
總結:
今天我們理解了對象類型的數據類型,也知道了對象和對象之間的調用方式。
再為大家提供些代碼吧。點擊此處下載