1. 程式人生 > 其它 >low-level——java基礎 API、包(7)

low-level——java基礎 API、包(7)

技術標籤:java程式設計java程式語言

一、類的構造方法

  1. 構造方法是類的成員變數之一,而且是很重要且常用的成員。
  2. 構造方法的主要作用是完成物件的初始化(給變數賦初值)。
  3. 構造方法的執行時機:堆中已分配了物件的記憶體,所有的成員變數已具有預設值,該物件還未被使用。此時 this 已指向本物件。
  4. 參考以上可以得知,構造方法的主要作用與它的執行時機緊密相關,就是初始化變數。
  5. 構造方法在物件的整個生命週期中只執行一次,不可以多次執行。
  6. 如果一個類沒有明確的指定構造方法,它一定有一個預設的無參的構造方法。否則成員將不會具有預設值,也就意味著未給這些變數分配記憶體。
  7. 如果給類指定了構造方法,那麼該類就沒有那個預設的構造方法。
  8. 一個類可以有多個構造方法,構造方法的簽名要求是方法名稱必須與類的名稱相同,方法沒有返回值。如果一個類有多個構造方法,它的區別只能是引數的個數,順序,型別的不同。所以構造方法同樣存在過載的形式。
  9. 如果使用帶參的構造方法來建立物件,需要給每個引數進行傳值。
  10. 構造方法可以使用的修飾符,public(其他的類可以建立本類的物件),private(其他類不能建立本類的物件,如果在應用中,規定某個類只能有一個,此時構造方法要定義為私有的,這個唯一的物件需要在類的內部建立,再由一個公共的方法向外返回該物件,符合這種特徵的類在java中就是實現了單例模式的類)。
package test;

public class
Dog { private String name; private static Dog dog = null; private Dog(){ } public static Dog getDog() { if(dog == null) dog = new Dog(); //私有構造方法的物件只能在本類中建立 return dog; } }
package test;

public class Dog_Test {
    public static void main(String[] args) {
Dog dog1 = Dog.getDog(); Dog dog2 = Dog.getDog(); System.out.println(""+dog1+'\n'+dog2); } }

二、API

  • 全稱 application program interface(應用程式設計介面)。此介面的含義表示提供給其他開發者使用的公開的應用程式。我們可以把介面看做一個方法,該方法也有名稱,有引數和返回值,開發者在自己的程式中使用介面就好像呼叫方法一樣,要傳參,也要接收返回值。如果程式的功能需要公開給其他人使用,此時就可以把該功能定義為一個介面。就好像電腦的USB介面。
  • 使用 java 進行程式設計,一定要用到各種介面。作為 java 技術生態圈,主要由幾個部分組成。
    1. java語言
    2. sun提供的一組基礎API
    3. 眾多的第三方機構或人為java打造的可以實現各種特定功能的API
  • sun公司提供了java API文件,其中的API包括javaSE部分的,也包括javaEE的部分,還包括一些擴充套件的API。java API文件就相當於字典,是一個基礎工具,利用它可以瞭解所有的API功能和特點,以及使用方式。

三、java的包

  • java應用程式設計中,有一個基本要求,所有的類及介面都應該放在包中。其實包就是檔案系統中的目錄。
  • 包的作用:
    1. 按照類和介面的功能及它們在應用中的位置,要把相似功能的類和介面放在同一包中,以區別於其他包中的類和介面。有利於類的管理。
    2. 結合類和方法的修飾符,可以實現許可權控制。比如 public 的類可以被其他包中的類訪問,protected 的類只能被本包中的類及子類訪問,friend(沒有修飾符)的類只能被本包的類訪問。類沒有私有的(private)。
    3. 在程式設計時應該要養成一個習慣,建立類之前先把包創建出來。
    4. 包具有層級結構,類似於 包名.子包名.子包名……,包名必須小寫。
    5. 包只能建在src下。
    6. 如果一個包中的類要訪問另一個包中的類,前提是必須使用 import 把要使用的類引入到本類中來使用,因此 import 具有宣告效果。不會引起歧義。
    7. 在java的基礎API中有一個java.lang包,該包中的API是程式編寫和執行甚至是JVM的執行都必須要使用的API。因此在任何類使用lang包中的類,不需要使用 import 引入。這也造成了一個問題,就是應用程式中類和介面的命令儘量不要與lang包中的類與介面同名,否則會造成程式執行的混亂。