使用 package 来管理类别吧!

昨天我们虽然各别把 .java 跟 .class 分类到不同的资料夹,
但长久下来还是不够的,我们还是需要把类别来做分类,让程序码更好管理~

在 Java 语法中有个 package 关键字,可以帮助我们把类别做分类管理哦!

我们来把昨天的两个档案加上 package !

package cc.oyang.util;

public class Utils {

	public static void printABC(){
		System.out.println("print ABC");
	}
	
}
package cc.oyang;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		Utils.printABC();
	}

}

设定 package 的同时也要把 .java 档案放到相同阶层的资料夹哦!如下图~
https://ithelp.ithome.com.tw/upload/images/20210907/20106215mM6PYXXUKm.png

那下一步就要再编译我们的 java 原始档:
https://ithelp.ithome.com.tw/upload/images/20210908/20106215ZDlq3c5Zyc.png

编译器却不知道 Utils 物件从哪里来,这是为什麽呢?
当我们在程序码里面使用某个类别时,如果在相同套件中,只需要使用 class 定义的类别名称就可以使用了,
但如果是在不同套件,就必须要使用 完全吻合名称 ,这又是什麽呀?

完全吻合名称(Fully qualified name) : package + class

也就是说~我们的 MyHelloWorld.java 要改成下方:

package cc.oyang;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		cc.oyang.util.Utils.printABC();
	}

}

再来编译一次!
javac -d classes src/cc/oyang/MyHelloWorld.java

https://ithelp.ithome.com.tw/upload/images/20210908/20106215ai23bBI8zv.png

咦~~~又失败了,为什麽呢?
原来是我们没有设定 -sourcepath 给 javac,javac 找不到 MyHelloWorld.java 使用到的额外类别的原始档 Utils.java
javac -sourcepath src -d classes src/cc/oyang/MyHelloWorld.java
https://ithelp.ithome.com.tw/upload/images/20210908/20106215KiAVHIyeRL.png

编译时如果有指定 -d 把 .class 放到到某个目录,结果会在该资料夹下自动建立出对应的套件阶层的资料夹哦!

最後一点!
如果每次都要用 完全吻合名称 ,加上套件名称又很长的话就是件麻烦事情了!
所以我们还有一个方便的东西叫做 import

package cc.oyang;

import cc.oyang.util.Utils;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		Utils.printABC();
	}

}

一样可以编译跟执行成功喔!

这边要执行的话,不能只用类别名称哦,要使用完全吻合名称!
https://ithelp.ithome.com.tw/upload/images/20210908/201062155AIygW0Xn7.png


<<:  DAY07 - [CSS+RWD] 导览列

>>:  AI新世界

Day 10 - 智慧城市Go Smart Award 经历(4) - 展览

这是回顾Go Smart Award的最後一集,  整个比赛的内容也在颁奖典礼举行的同时, 配合在...

[Day18] MySQL 的 CRUD 语法

上次我们介绍如何用 MySQL Workbench GUI 操作资料库,这次我们要来简单介绍一下 C...

学习成长

前言 敏捷原则第九条:「持续追求优越的技术与优良的设计,以强化敏捷性。」这个持续追求,除了逐步在实作...

一招解决iphone 换机资料转移问题--〖必学〗

当你想更换手机,但是手机上的资料又没有办法完全转移到新的手机上。例如:新出的13promax很好,但...

铁人赛 Day9 -- 一定要知道的 CSS (六) -- background-color/background-image

前言 背景是一个如此重要的东西,你能想像萤幕的话棉全都是白底或黑底吗!!当然不行啊!! backgr...