iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0

切割程式
在一個程式中,可能會有很多的類別,為了整理程式,可將每一個類別單獨存放在一個原始檔中,把檔名取為「類別名稱.java」,並把全部類別及主程式放在同一個目錄中。

https://ithelp.ithome.com.tw/upload/images/20221014/20152201KjE1Wf9rF5.png
放在同目錄的不同原始檔

https://ithelp.ithome.com.tw/upload/images/20221014/201522011Sa8ngk26K.png

https://ithelp.ithome.com.tw/upload/images/20221014/20152201mVWhfAsAIC.png
如圖所示,將主程式及Shape、Circle、Cylinder、Rectangle類別分開存放,這樣程式就不會過於攏長,因為類別名稱跟檔案名稱相同,所以看起來一目了然,管理起來更加方便。

撰寫好的類別也可以給其他人使用,但對方的程式中不能有同名的類別,遇到這種情況,要一一修改名稱不僅浪費時間,也可能在修改時造成錯誤。

所以Java提供套件(Packages),可將類別包裝起來,需在程式最開頭使用Package敘述,指名套件名稱,與同名類別區隔開來,才不會造成混淆。
https://ithelp.ithome.com.tw/upload/images/20221014/201522010yzydAAqRg.png
剛剛用來存放主程式及Shape、Circle、Cylinder、Rectangle類別的套件。

使用套件中的類別
要使用其他套件中的類別,需要使用完整名稱(Fully Qualified Name),以「套件名稱.類別名稱」表示。
https://ithelp.ithome.com.tw/upload/images/20221014/20152201x9G52Y46Ko.png

package Another;

public class Circle extends Shape{
    protected double r;
    protected final double PI=3.14; 
    
    public Circle(double x,double y,double r){
        super(x,y);
        this.r=r;
    }
    
    public String toString(){
        return super.toString()+", 半徑:"+r;
    }
    
    public double area(){
        return (r*r*PI);
    }
}
package com.mycompany.testseven;

public class testSeven {
    public static void main(String[] args) {
        Another.Shape s=new Another.Shape(1,2);
        Another.Rectangle re= new Another.Rectangle(3,4,7,9);
        Another.Circle ci=new Another.Circle(3,4,10);
        Another.Cylinder cr=new Another.Cylinder(3,4,10,3);
        
        System.out.println("Rectangle"+re.toString());
        System.out.println("長方形面積:"+re.area());
        System.out.println("Circle"+ci.toString());
        System.out.println("圓形面積:"+ci.area());
        System.out.println("Cylinder"+cr.toString());
        System.out.println("圓柱體面積:"+cr.area());
    } 
}

使用import敘述
在編寫或閱讀程式時,使用其他套件的類別時,都要使用完整名稱識別類別或介面較不方便,因此,可以使用import敘述,指定套件類別名稱匯入程式中,這樣就不需要一直使用完整名稱表示。

匯入套件中單一的類別名稱
一個一個匯入

package com.mycompany.testseven;

import Another.Shape;
import Another.Rectangle;
import Another.Cylinder;
import Another.Circle;

public class testSeven {
    public static void main(String[] args) {
        Shape s=new Shape(1,2);
        Rectangle re= new Rectangle(3,4,7,9);
        Circle ci=new Circle(3,4,10);
        Cylinder cr=new Cylinder(3,4,10,3);
        
        System.out.println("Rectangle"+re.toString());
        System.out.println("長方形面積:"+re.area());
        System.out.println("Circle"+ci.toString());
        System.out.println("圓形面積:"+ci.area());
        System.out.println("Cylinder"+cr.toString());
        System.out.println("圓柱體面積:"+cr.area());
    } 
}

匯入套件中所有的類別名稱

package com.mycompany.testseven;

import Another.*;

public class testSeven {
    public static void main(String[] args) {
        Shape s=new Shape(1,2);
        Rectangle re= new Rectangle(3,4,7,9);
        Circle ci=new Circle(3,4,10);
        Cylinder cr=new Cylinder(3,4,10,3);
        
        System.out.println("Rectangle"+re.toString());
        System.out.println("長方形面積:"+re.area());
        System.out.println("Circle"+ci.toString());
        System.out.println("圓形面積:"+ci.area());
        System.out.println("Cylinder"+cr.toString());
        System.out.println("圓柱體面積:"+cr.area());
    } 
}

參考資料:
最新java程式語言第六版


上一篇
內部類別及匿名類別
下一篇
結語:挑戰完成
系列文
大學每日任務:攝取新知識及學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言