欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

淺析Java語言中的內(nèi)部類-創(chuàng)新互聯(lián)

淺析Java語言中的內(nèi)部類[@more@]  提起Java內(nèi)部類(Inner Class)可能很多人不太熟悉,實(shí)際上類似的概念在C++里也有,那就是嵌套類(Nested Class),關(guān)于這兩者的區(qū)別與聯(lián)系,在下文中會(huì)有對(duì)比。內(nèi)部類從表面上看,就是在類中又定義了一個(gè)類(下文會(huì)看到,內(nèi)部類可以在很多地方定義),而實(shí)際上并沒有那么簡單,乍看上去內(nèi)部類似乎有些多余,它的用處對(duì)于初學(xué)者來說可能并不是那么顯著,但是隨著對(duì)它的深入了解,你會(huì)發(fā)現(xiàn)Java的設(shè)計(jì)者在內(nèi)部類身上的確是用心良苦。學(xué)會(huì)使用內(nèi)部類,是掌握J(rèn)ava高級(jí)編程的一部分,它可以讓你更優(yōu)雅地設(shè)計(jì)你的程序結(jié)構(gòu)。下面從以下幾個(gè)方面來介紹:

  第一次見面

  public interface Contents {
  int value();
  }

  public interface Destination {
  String readLabel();
  }

  public class Goods {
  private class Content implements Contents {
  private int i = 11;
  public int value() {
   return i;
  }
  }

  protected class GDestination implements Destination {
  private String label;
  private GDestination(String whereTo) {
   label = whereTo;
  }
  public String readLabel() {
   return label;
  }
  }

  public Destination dest(String s) {
  return new GDestination(s);
  }
  public Contents cont() {
  return new Content();
  }
  }

  class TestGoods {
  public static void main(String[] args) {
  Goods p = new Goods();
  Contents c = p.cont();
  Destination d = p.dest("Beijing");
  }
  }

  在這個(gè)例子里類Content和GDestination被定義在了類Goods內(nèi)部,并且分別有著protected和private修飾符來控制訪問級(jí)別。Content代表著Goods的內(nèi)容,而GDestination代表著Goods的目的地。它們分別實(shí)現(xiàn)了兩個(gè)接口Content和Destination。在后面的main方法里,直接用 Contents c和Destination d進(jìn)行操作,你甚至連這兩個(gè)內(nèi)部類的名字都沒有看見!這樣,內(nèi)部類的第一個(gè)好處就體現(xiàn)出來了——隱藏你不想讓別人知道的操作,也即封裝性。

  同時(shí),我們也發(fā)現(xiàn)了在外部類作用范圍之外得到內(nèi)部類對(duì)象的第一個(gè)方法,那就是利用其外部類的方法創(chuàng)建并返回。上例中的cont()和dest()方法就是這么做的。那么還有沒有別的方法呢?當(dāng)然有,其語法格式如下:

  outerObject=new outerClass(Constructor Parameters);

  outerClass.innerClass innerObject=outerObject.new InnerClass(Constructor Parameters);

  注意在創(chuàng)建非靜態(tài)內(nèi)部類對(duì)象時(shí),一定要先創(chuàng)建起相應(yīng)的外部類對(duì)象。至于原因,也就引出了我們下一個(gè)話題——非靜態(tài)內(nèi)部類對(duì)象有著指向其外部類對(duì)象的引用,對(duì)剛才的例子稍作修改:

  public class Goods {

  private valueRate=2;

  private class Content implements Contents {
  private int i = 11*valueRate;
  public int value() {
   return i;
  }
  }

  protected class GDestination implements Destination {
  private String label;
  private GDestination(String whereTo) {
   label = whereTo;
  }
  public String readLabel() {
   return label;
  }
  }

  public Destination dest(String s) {
  return new GDestination(s);
  }
  public Contents cont() {
  return new Content();
  }
  }

  修改的部分用藍(lán)色顯示了。在這里我們給Goods類增加了一個(gè)private成員變量valueRate,意義是貨物的價(jià)值系數(shù),在內(nèi)部類Content的方法value()計(jì)算價(jià)值時(shí)把它乘上。我們發(fā)現(xiàn),value()可以訪問valueRate,這也是內(nèi)部類的第二個(gè)好處——一個(gè)內(nèi)部類對(duì)象可以訪問創(chuàng)建它的外部類對(duì)象的內(nèi)容,甚至包括私有變量!這是一個(gè)非常有用的特性,為我們在設(shè)計(jì)時(shí)提供了更多的思路和捷徑。要想實(shí)現(xiàn)這個(gè)功能,內(nèi)部類對(duì)象就必須有指向外部類對(duì)象的引用。Java編譯器在創(chuàng)建內(nèi)部類對(duì)象時(shí),隱式的把其外部類對(duì)象的引用也傳了進(jìn)去并一直保存著。這樣就使得內(nèi)部類對(duì)象始終可以訪問其外部類對(duì)象,同時(shí)這也是為什么在外部類作用范圍之外向要?jiǎng)?chuàng)建內(nèi)部類對(duì)象必須先創(chuàng)建其外部類對(duì)象的原因。

  有人會(huì)問,如果內(nèi)部類里的一個(gè)成員變量與外部類的一個(gè)成員變量同名,也即外部類的同名成員變量被屏蔽了,怎么辦?沒事,Java里用如下格式表達(dá)外部類的引用:

  outerClass.this

  有了它,我們就不怕這種屏蔽的情況了。

分享題目:淺析Java語言中的內(nèi)部類-創(chuàng)新互聯(lián)
文章起源:http://chinadenli.net/article32/jgopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
九九热精品视频在线观看| 亚洲淫片一区二区三区| 久久精品国产99国产免费| 欧美大胆女人的大胆人体| 欧美高潮喷吹一区二区| 国产精品国三级国产专不卡| 欧美精品专区一区二区| 欧美日韩一区二区三区色拉拉| 国产成人精品久久二区二区| 亚洲美女国产精品久久| 午夜久久久精品国产精品| 国产成人亚洲欧美二区综| 少妇高潮呻吟浪语91| 日本加勒比系列在线播放| 亚洲天堂男人在线观看| 开心久久综合激情五月天| 香港国产三级久久精品三级| 国产精品白丝久久av| 大胆裸体写真一区二区| 国产精品欧美一区二区三区| 亚洲国产色婷婷久久精品| 在线懂色一区二区三区精品| 日韩人妻精品免费一区二区三区| 色哟哟哟在线观看视频| 亚洲精品成人福利在线| 成人三级视频在线观看不卡| 丝袜美女诱惑在线观看| 色婷婷国产熟妇人妻露脸| 一区二区欧美另类稀缺| 欧美六区视频在线观看| 91精品国自产拍老熟女露脸| 丁香六月婷婷基地伊人| 国产日韩精品激情在线观看| 亚洲人妻av中文字幕| 欧美一区二区口爆吞精| 在线一区二区免费的视频| 国产精品蜜桃久久一区二区| 大香蕉伊人精品在线观看| 欧美久久一区二区精品| 中文字幕精品人妻一区| 亚洲欧美黑人一区二区|