在學習程式的過程中你一定看過namespace(命名空間)這個名詞,那namespace到底是指什麼東西?
namespace如名稱所述,就是充滿一堆名稱(name)的空間(space)。命名空間內的名稱必須是唯一的,而不同的空間中可以擁有相同的命名。
那為什麼要有namespace呢?因為有了namespace就可以在不同的命名空間中使用相同的名稱,因為儘管擁有相同的名稱,但仍可以透過不同的namespace來區別。
例如台北的王小明和高雄的王小明雖然都叫王小明,但你知道這兩個王小明是不同的,此時的命名空間就是行政區;或是三年A班的李淑芬跟三年B班的李淑芬是不同的,此時的命名空間就是班級編號。若沒有命名空間來區別,那全世界只能有一個人叫王小明或李淑芬,否則當提及王小明時,我們無法區別是指哪個王小明。
上面的說明不太好懂,請見下面的Java程式範例就會比較好理解了。
class MyClass {
String a;
String a; // Duplicate field MyClass.a
}
上面的MyClass
類別中,有兩個名稱相同的成員變數a
,但Java會無法區別兩個變數,而造成重複命名的編譯錯誤。MyClass
就是一個namespace。
再看以下範例,下面程式不會有任何錯誤,method1()
方法與method2()
方法中都各自可以有名稱為a
的變數,所以method1()
方法與method2()
也是一種命名空間。
class MyClass {
String a;
public void method1() {
String a;
}
public void method2() {
String a;
}
}
而在不同的package下是可以有相同名稱的類別,例如com.abc.MyClass
與com.xyz.MyClass
,所以package也是一種命名空間。
沒有留言:
張貼留言