成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java? 教程(使用包成員)

Pines_Cheng / 1160人閱讀

使用包成員

組成包的類(lèi)型稱(chēng)為包成員。

要從其包外部使用公共包成員,你必須執(zhí)行以下操作之一:

通過(guò)其完全限定名稱(chēng)引用該成員

導(dǎo)入包成員

導(dǎo)入成員的整個(gè)包

每種情況都適用于不同的情況,如以下各節(jié)所述。

通過(guò)其完全限定名稱(chēng)引用包成員

到目前為止,本教程中的大多數(shù)示例都通過(guò)簡(jiǎn)單名稱(chēng)引用類(lèi)型,例如RectangleStackOfInts,如果你編寫(xiě)的代碼與該成員位于同一個(gè)包中,或者已導(dǎo)入該成員,則可以使用包成員的簡(jiǎn)單名稱(chēng)。

但是,如果你嘗試使用其他包中的成員并且尚未導(dǎo)入該包,則必須使用該成員的完全限定名稱(chēng),該名稱(chēng)包括包名稱(chēng),這是上一個(gè)示例中graphics包中聲明的Rectangle類(lèi)的完全限定名稱(chēng)。

graphics.Rectangle

你可以使用此限定名稱(chēng)來(lái)創(chuàng)建graphics.Rectangle的實(shí)例:

graphics.Rectangle myRect = new graphics.Rectangle();

限定名稱(chēng)不經(jīng)常使用,重復(fù)使用名稱(chēng)時(shí),重復(fù)鍵入名稱(chēng)會(huì)變得乏味,代碼變得難以閱讀,或者,你可以導(dǎo)入成員或其包,然后使用其簡(jiǎn)單名稱(chēng)。

導(dǎo)入包成員

要將特定成員導(dǎo)入當(dāng)前文件,請(qǐng)?jiān)谌魏晤?lèi)型定義之前在文件開(kāi)頭放置import語(yǔ)句,但在package語(yǔ)句之后(如果有),以下是從上一節(jié)中創(chuàng)建的graphics包導(dǎo)入Rectangle類(lèi)的方法。

import graphics.Rectangle;

現(xiàn)在你可以通過(guò)簡(jiǎn)單名稱(chēng)引用Rectangle類(lèi)。

如果你只使用graphics包中的一些成員,這種方法很有效,但是如果從包中使用多種類(lèi)型,則應(yīng)導(dǎo)入整個(gè)包。

導(dǎo)入整個(gè)包

要導(dǎo)入特定包中包含的所有類(lèi)型,請(qǐng)使用帶有星號(hào)(*)通配符的import語(yǔ)句。

import graphics.*;

現(xiàn)在,你可以通過(guò)簡(jiǎn)單名稱(chēng)引用graphics包中的任何類(lèi)或接口。

Circle myCircle = new Circle();
Rectangle myRectangle = new Rectangle();

import語(yǔ)句中的星號(hào)只能用于指定包中的所有類(lèi),如此處所示,它不能用于匹配包中類(lèi)的子集,例如,以下內(nèi)容與graphics包中以A開(kāi)頭的所有類(lèi)都不匹配。

// does not work
import graphics.A*;

相反,它會(huì)生成編譯器錯(cuò)誤,使用import語(yǔ)句,通常只導(dǎo)入單個(gè)包成員或整個(gè)包。

另一種不太常見(jiàn)的導(dǎo)入形式允許你導(dǎo)入封閉類(lèi)的公共嵌套類(lèi),例如,如果graphics.Rectangle類(lèi)包含有用的嵌套類(lèi)(如Rectangle.DoubleWideRectangle.Square),則可以使用以下兩個(gè)語(yǔ)句導(dǎo)入Rectangle及其嵌套類(lèi)。

import graphics.Rectangle;
import graphics.Rectangle.*;

請(qǐng)注意,第二個(gè)import語(yǔ)句不會(huì)導(dǎo)入Rectangle。

另一種不常見(jiàn)的導(dǎo)入形式是靜態(tài)導(dǎo)入語(yǔ)句,將在本節(jié)末尾討論。

為方便起見(jiàn),Java編譯器會(huì)自動(dòng)為每個(gè)源文件導(dǎo)入兩個(gè)完整的包:java.lang包和當(dāng)前包(當(dāng)前文件的包)。

包的表觀層次結(jié)構(gòu)

首先,包似乎是分層的,但它們不是,例如,Java API包括java.awt包,java.awt.color包,java.awt.font包以及許多以java.awt開(kāi)頭的包。但是,java.awt包中包含java.awt.color包、java.awt.font包和其他java.awt.xxxx包。前綴java.awt(Java抽象窗口工具包)用于許多相關(guān)的包,以使關(guān)系明顯,但不顯示包含。

導(dǎo)入java.awt.*將導(dǎo)入java.awt包中的所有類(lèi)型,但它不導(dǎo)入java.awt.colorjava.awt.font或任何其他java.awt.xxxx包。如果你計(jì)劃使用java.awt.color中的類(lèi)和其他類(lèi)型以及java.awt中的類(lèi),則必須導(dǎo)入這兩個(gè)包使用其所有文件:

import java.awt.*;
import java.awt.color.*;
名稱(chēng)歧義

如果一個(gè)包中的成員與另一個(gè)包中的成員共享其名稱(chēng)并且兩個(gè)包都已導(dǎo)入,則必須通過(guò)其限定名稱(chēng)引用每個(gè)成員,例如,graphics包定義了一個(gè)名為Rectangle的類(lèi),java.awt包還包含一個(gè)Rectangle類(lèi),如果已導(dǎo)入graphicsjava.awt,則以下內(nèi)容不明確。

Rectangle rect;

在這種情況下,你必須使用成員的完全限定名稱(chēng)來(lái)準(zhǔn)確指出你想要的Rectangle類(lèi),例如:

graphics.Rectangle rect;
靜態(tài)導(dǎo)入語(yǔ)句

在某些情況下,你需要頻繁訪問(wèn)static final字段(常量)和來(lái)自一個(gè)或兩個(gè)類(lèi)的靜態(tài)方法,反復(fù)對(duì)這些類(lèi)的名稱(chēng)進(jìn)行前綴可能會(huì)導(dǎo)致代碼混亂,static import語(yǔ)句為你提供了一種導(dǎo)入要使用的常量和靜態(tài)方法的方法,這樣你就不需要為其類(lèi)的名稱(chēng)添加前綴。

java.lang.Math類(lèi)定義PI常量和許多靜態(tài)方法,包括計(jì)算正弦、余弦、切線、平方根、最大值
最小值、指數(shù)等的方法,例如:

public static final double PI 
    = 3.141592653589793;
public static double cos(double a)
{
    ...
}

通常,要從其他類(lèi)使用這些對(duì)象,前綴類(lèi)名,如下所示。

double r = Math.cos(Math.PI * theta);

你可以使用static import語(yǔ)句導(dǎo)入java.lang.Math的靜態(tài)成員,這樣你就不需要為類(lèi)名稱(chēng)添加前綴Math,Math的靜態(tài)成員可以多帶帶導(dǎo)入:

import static java.lang.Math.PI;

或作為一個(gè)組:

import static java.lang.Math.*;

導(dǎo)入后,可以無(wú)限制地使用靜態(tài)成員,例如,之前的代碼段將變?yōu)椋?/p>

double r = cos(PI * theta);

顯然,你可以編寫(xiě)自己的類(lèi),其中包含你經(jīng)常使用的常量和靜態(tài)方法,然后使用static import語(yǔ)句,例如:

import static mypackage.MyConstants.*;
非常謹(jǐn)慎地使用static import,過(guò)度使用靜態(tài)導(dǎo)入會(huì)導(dǎo)致代碼難以閱讀和維護(hù),因?yàn)榇a的讀者不知道哪個(gè)類(lèi)定義了特定的靜態(tài)對(duì)象,正確地使用,static import通過(guò)刪除類(lèi)名重復(fù)使代碼更具可讀性。
上一篇:創(chuàng)建和使用包 下一篇:管理源文件和類(lèi)文件

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72949.html

相關(guān)文章

  • Java? 教程(嵌套類(lèi))

    嵌套類(lèi) Java編程語(yǔ)言允許你在另一個(gè)類(lèi)中定義類(lèi),這樣的類(lèi)稱(chēng)為嵌套類(lèi),如下所示: class OuterClass { ... class NestedClass { ... } } 術(shù)語(yǔ):嵌套類(lèi)分為兩類(lèi):靜態(tài)和非靜態(tài),聲明為static的嵌套類(lèi)稱(chēng)為靜態(tài)嵌套類(lèi),非靜態(tài)嵌套類(lèi)稱(chēng)為內(nèi)部類(lèi)。 class OuterClass { ... stati...

    Cheng_Gang 評(píng)論0 收藏0
  • Java? 教程(創(chuàng)建和使用

    包 本課程解釋了如何將類(lèi)和接口捆綁到包中,如何使用包中的類(lèi),以及如何安排文件系統(tǒng)以便編譯器可以找到源文件。 創(chuàng)建和使用包 為了使類(lèi)型更易于查找和使用,避免命名沖突和控制訪問(wèn),程序員將相關(guān)類(lèi)型的組捆綁到包中。 定義:包是一組提供訪問(wèn)保護(hù)和名稱(chēng)空間管理的相關(guān)類(lèi)型,請(qǐng)注意,類(lèi)型引用類(lèi)、接口、枚舉和注解類(lèi)型,枚舉和注解類(lèi)型分別是特殊的類(lèi)和接口,因此在本課中通常將類(lèi)型簡(jiǎn)稱(chēng)為類(lèi)和接口。 作為Java平臺(tái)一部...

    617035918 評(píng)論0 收藏0
  • Java? 教程(管理源文件和類(lèi)文件)

    管理源文件和類(lèi)文件 Java平臺(tái)的許多實(shí)現(xiàn)依賴(lài)于分層文件系統(tǒng)來(lái)管理源文件和類(lèi)文件,盡管Java語(yǔ)言規(guī)范不要求這樣做,策略如下。 將類(lèi)、接口、枚舉或注解類(lèi)型的源代碼放在文本文件中,該文件的名稱(chēng)是類(lèi)型的簡(jiǎn)單名稱(chēng),其擴(kuò)展名為.java,例如: //in the Rectangle.java file package graphics; public class Rectangle { ... ...

    ghnor 評(píng)論0 收藏0
  • Java? 教程(繼承)

    繼承 在前面的課程中,你已經(jīng)多次看到了繼承,在Java語(yǔ)言中,類(lèi)可以從其他類(lèi)派生,從而從這些類(lèi)繼承字段和方法。 定義:從另一個(gè)類(lèi)派生的類(lèi)稱(chēng)為子類(lèi)(也是派生類(lèi),擴(kuò)展類(lèi)或子類(lèi)),派生子類(lèi)的類(lèi)稱(chēng)為超類(lèi)(也是基類(lèi)或父類(lèi))。 除了Object沒(méi)有超類(lèi),每個(gè)類(lèi)都有一個(gè)且只有一個(gè)直接超類(lèi)(單繼承),在沒(méi)有任何其他顯式超類(lèi)的情況下,每個(gè)類(lèi)都隱式地是Object的子類(lèi)。 類(lèi)可以從派生自類(lèi)的類(lèi)派生的類(lèi)派生,依此類(lèi)推,...

    Achilles 評(píng)論0 收藏0
  • Java? 教程(類(lèi)的更多方面)

    類(lèi)的更多方面 本節(jié)介紹依賴(lài)于使用對(duì)象引用的類(lèi)的更多方面以及你在前面的對(duì)象部分中了解到的點(diǎn)運(yùn)算符。 從方法返回值 方法返回到調(diào)用它的代碼。 完成方法中的所有語(yǔ)句。 到達(dá)return語(yǔ)句。 或拋出異常(稍后介紹)。 以先發(fā)生者為準(zhǔn)。 你在方法聲明中聲明方法的返回類(lèi)型,在方法體內(nèi),使用return語(yǔ)句返回值。 聲明為void的任何方法都不返回值,它不需要包含return語(yǔ)句,但它可能會(huì)這樣做,在這種...

    shinezejian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<