Java物件和類的使用
阿新 • • 發佈:2021-01-08
技術標籤:java程式設計自學java程式語言類
用Java語言實現一個數字時鐘模組
這需要我們一開始去建立一個clock的Java project,數字時鐘的顯示模組,一般格式為小時和分鐘(00:00-23:59).,所以我也需要在這工程上定義兩個類(class)分別是Display和Clock,我一般寫類名的時候首字母都大寫;在每一個類中我們都需要定義一些內部成員函式和變數,來完成一些操作;
讓我們先看看類Display中的模組:
package clock;
public class Display {
private int value = 0; //小時數值
private int limit = 0; //一個限制,上限數值後的反應
public Display(int limit) //建構函式,
{
this.limit = limit; //用this呼叫成員變數中的limit初始值為0,來和本地變數中的limit
(24)進行數值傳遞
}
public void increasa() //讓value數值加一的函式increase,且帶有返回型別
{
value++;
if(value == limit) //判斷value中的數值加一是否最終等於上限值24
{
value = 0;
}
}
public int getvalue() //得到這個value值的函式getvalue,也就是目前的value值
{
return value;
}
//例如表達數字時鐘的數值區間分別為小時和分鐘,小時和分鐘(1-24小時0-60分鐘或00:00-23:59)
public static void main(String[] args) {
// TODO Auto-generated method stub
Display d = new Display(24); //建立類的物件變數d
for(;;) //做個無限迴圈,也就是死迴圈
{
d.increasa();
System.out.println(d.getvalue());
}
}
}
這是一個相對獨立的程式,但這還並不完善
我們前面說了,需要兩個模組,一個類Display另一個就是類Clock,在Clock中我們要去定義兩個物件屬性hour和minute,這裡我們也要注意程式的public公有和private私有裡的函式和變數的使用,訪問等
package clock;
public class Clock {
// 此時需要定義類Clock的一個屬性minute和hour
private Display hour = new Display(24); // 建立一個新的函式Display物件中的物件屬性hour
private Display minute = new Display(60); //再建立一個新的函式Display物件來定義一個物件屬性minute
//以上兩者都是獨立,互不干涉
public void start()
{
while( true)
{
minute.increasa(); //minute自動增加
if(minute.getvalue()==0) //如果自動增加的值=0
{
hour.increasa(); //則hour就自動增加
}
System.out.printf("%02d:%02d\n",hour.getvalue(),minute.getvalue()); //%開頭輸出的整數,2d是兩個字元的位置
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Clock clock = new Clock();
clock.start(); //啟動
}
}
在package clock中的Display、Clock類
整個數字時鐘在程式中執行結果也算完整了,
再來看看程式中的public private的關係是如何
在現在的clock工程當中,有兩個類Display和Clock,這兩個類中都有自己的mian函式;
例如類Display中的成員變數可以是其他類Clock中的物件;
private 私有的函式或變數,只有在類的內部中的函式或變數訪問,相當於自己訪問自己了;
public意義是公有的,在類中是可以被其它函式和變數訪問的;
當public後面無class或static關鍵字的時候,可定義函式,都可以訪問,例如類Clock可以訪問Display中的所有帶有public的函式和變數;
如果一個函式或變數前面沒有public或private,那麼他是“friendly”的,包(package)中的其它類都可以訪問它;
如果一個類前面有public,這表明任何人都可以用這個類的定義來定義變數;
點.java檔案也叫編譯單元,一次只能編譯一個點java檔案,且一個.Java檔案中只能有一個public class;