国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA程序員必讀:基礎篇(4.a)-類和繼承

2019-11-18 10:42:52
字體:
來源:轉載
供稿:網友

  在前面的教程面向對象編程概念的內容中你學習到了面向對象的概念。現在我們來學習如何將這些概念用在java中。在這部分教程中將介紹
  創建類
  治理繼續
  執行嵌套類
  5.1 創建類
  這節中將介紹一個更大的類Stack的完整描述,并且描述一個從它繼續而來的對象的生命周期的類的所有組件。首先介紹構造函數,然后介紹成員變量和方法。
  既然我們前面已經介紹了如何創建和使用對象以及怎樣將對象從內存中清除,現在該是我們介紹怎樣編寫類的時候了。這一節中將通過一個執行LIFO(后入先出)堆棧的小例子來介紹類的組件。如圖22給處了類以及識別代碼的結構:
   JAVA程序員必讀:基礎篇(4.a)-類和繼續(圖一)
  (圖22)
  堆棧的執行使用了另外的對象,即Vector來存儲它的元素。Vector是一個對象的數組,在需要空間的時候它為新對象分配內存空間。這個Stack類是通過使用Vector來存儲它的元素的。但是它對Vector限定了LIFO,也就是說,你可以只增加元素并且從堆棧的頂部移出元素
  5.1.1 類的聲明
  圖22給出了組成類執行的兩個主要組件:類聲明和類實體。類聲明定義了類的名字以及其它的屬性。為Stack類的類聲明是相對地簡單,它指示了類為public并且它地名字為Stack。
  圖23給出了類聲明可能的組件以及描述了它們的目的。必須的組件是class要害字。所有其它的組件是可選的。假如你沒有聲明這些可選的組件,JAVA編譯器就將給出缺省值:沒有執行接口的對象的nonpublic、nonabstract、nofinal子類。
   JAVA程序員必讀:基礎篇(4.a)-類和繼續(圖二)
  (圖23)
  下面對每個類的組件給出更具體的介紹。
  public :這個public要害字聲明了類可以在其它任何的類中使用。
  abstract :聲明了這個類不能被實例化。
  Final:聲明了類不能被繼續,即沒有子類了。
  class NameOfClass :要害字class指示編譯器類的聲明以及類的名字是NameOfClass。
  extends Super :這個extends 子句認為Super是類的父類,因此在類的分級結構中插入了類。
  implements Interfaces :為了聲明類可執行一個或多個接口,可以使用要害字implement并且在其后面給出由類執行的接口的名字的列表,它們是以逗號分隔的。
  5.1.2 類實體
  類實體是跟在類聲明的后面,它是嵌入在大括號{和}中間的。類實體包含了所有實例變量和類變量的聲明。另外,類實體還包含了所有實例方法和類方法的聲明。
  5.1.3 為類提供構造函數
  類可能包含一個或者多個的構造函數,它提供了從類創建的對象的初始化。
  所有的JAVA類都有構造函數,它用來對新的對象進行初始化。構造函數與類的名字是相同的。比如,Stack類的構造函數的名字為Stack,而Rectangle類的構造函數的名字為Rectangle,Thread類的構造函數的名字為Thread。下面給出Stack類的構造函數。
  public Stack() {
  items = new Vector(10);
  }
  JAVA支持對構造函數的重載,這樣一個類就可以有多個構造函數,所有的構造函數的名字都是相同的。下面是定義在Stack的另外的構造函數。這個構造函數是根據它的參數來初始化堆棧的大小。
  public Stack(int initialSize) {
  items = new Vector(initialSize);
  }
  從上面可以看出兩個構造函數都有相同的名字,但是它們有不同的參數列表。編譯器會根據參數列表的數目以及類型了區分這些構造函數的。典型地,構造函數使用它的參數來初始化新的對象狀態。當創建對象的時候,選擇構造函數要看看它的參數是否最好反映了你想初始化的新對象。
  5.1.3 為類提供構造函數
  根據你傳遞給構造函數參數的數目和類型,編譯器可以決定要使用哪個構造函數。下面的代碼編譯器是熟悉的,它是使用了單一的整型參數:
  new Stack(10);
  相似地,當你編寫下面代碼的時候,編譯器選擇了沒有參數的構造函數或者缺省的構造函數:
  new Stack();
  當你編寫自己的類的時候,你不必為它提供構造函數。系統會自動提供缺省的構造函數。這個缺省的構造函數不會完成任何事情。因此,假如你想進行一些初始化的時候,你就要為類編寫一些構造函數了。
  下面是Thread的子類的構造函數,它執行動畫,設置了一些缺省的數值,比如幀速度、圖片的數目然后裝載圖片。
  class AnimationThread extends Thread {
  int framesPerSecond;
  int numImages;
  Image[] images;
  AnimationThread(int fps, int num) {
  super("AnimationThread");
  this.framesPerSecond = fps;
  this.numImages = num;
  this.images = new Image[numImages];
  for (int i = 0; i <= numImages; i++) {
  . . .
  // 以下轉載圖片
  . . .
  }
  }
  . . .
  }
  5.1.3 為類提供構造函數
  實際上構造函數的實體跟方法的實體是相似的,也就是說,它包含了局部變量聲明、循環以及其它的語句。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤水市| 甘孜| 岗巴县| 景宁| 平安县| 崇文区| 阿坝县| 五峰| 丰宁| 吉林省| 永丰县| 巴彦淖尔市| 开平市| 佛学| 五大连池市| 辽宁省| 长子县| 香河县| 泾川县| 滨海县| 九龙县| 托里县| 五寨县| 昌图县| 广宗县| 庐江县| 诸城市| 西平县| 湖北省| 赤壁市| 原阳县| 光泽县| 马鞍山市| 新建县| 新竹县| 上蔡县| 汶川县| 眉山市| 黎平县| 汉阴县| 措美县|