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

首頁 > 學院 > 開發(fā)設計 > 正文

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

2019-11-18 10:42:28
字體:
供稿:網(wǎng)友

  5.1.6 控制對類成員的訪問
  (3)Public
  最簡單的訪問指示是public。在任何類中、任何包中都可以訪問了的public成員。只有在外部對象使用的時候不會產(chǎn)生不良的結(jié)果的時候,才聲明為public成員。為了聲明一個public成員,你可以使用public要害字,如下:
  package Greek;
  public class Alpha {
  public int iampublic;
  public void publicMethod() {
  System.out.  }
  }
  現(xiàn)在,讓我們重新編寫B(tài)eta類再將它放置到不同的包中,并且要確保它跟Alpha毫無關系:
  package Roman;
  import Greek.*;
  class Beta {
  void
accessMethod() {
  Alpha a = new Alpha();
  a.iampublic = 10; // legal
  a.publicMethod(); // legal
  }
  }
  從上面的代碼段你可以看出,Beta可以合法地檢查和修改在Alpha類中地iampublic變量并且可以合法地調(diào)用publicMethod。
  (4)Package
  假如你不顯性設置成員訪問其它級別的成員的時候,使用package訪問級。這個訪問級答應在相同包中的類訪問成員。訪問的級別是假設在相同包中的類是互相信任的朋友。比如 ,以下修改過的Alpha類聲明了一個單一包訪問的成員變量和方法。Alpha處在Greek包中:
  package Greek;
  class Alpha {
  int iampackage;
  void packageMethod() {
  System.out.println("packageMethod");
  }
  }
  這個Alpha類同時可以訪問iampackage和packageMethod。另外,所有定義在和Alpha相同的類也可以訪問iampackage和packageMethod。假如Alpha和Beta都是定義為Greek包的一部分:
  package Greek;
  class Beta {
  void accessMethod() {
  Alpha a = new Alpha();
  a.iampackage = 10; // 合法
  a.packageMethod(); // 合法
  }
  }
  如上所述,Beta可以合法訪問iampackage和packageMethod。
  5.1.7 理解實例和類成員
  java類可以包括兩種類型的成員:實例成員和類成員。這一小節(jié)將向你介紹如何生命這兩種成員以及如何使用它們。
  你可以如下來聲明一個成員變量,如Myclass中的aFloat:
  class MyClass {
  float aFloat;
  }
  你聲明了一個實例變量。每次你創(chuàng)建類的實例的時候,系統(tǒng)就會為這個實例創(chuàng)建一個類實例的副本。你可以對象中訪問對象的實例變量。
  實例變量跟類變量是有區(qū)別的。系統(tǒng)為每個類分配類變量而不管類創(chuàng)建的實例有多少。當?shù)谝淮握{(diào)用類的時候,系統(tǒng)為類變量分配內(nèi)存。所有的實例共享了類的類變量的相同副本。你可以通過一個實例或者類本身來訪問類變量。
  方法是相似的,類有實例方法和類方法。實例方法是對當前對象實例變量進行操作的,而且訪問類變量。另外一個方面,類方法不能訪問定義在類中的實例變量,除非它們創(chuàng)建了一個新的對象以及通過對象訪問它們。同時,類方法可以在類中被調(diào)用,你不必一個實例來調(diào)用一個類方法。
  缺省地,除非其它指定,定義在類中地成員是實例成員。定義在下面的類有一個實例變量(整型數(shù)x)以及兩個實例方法(x和setX,是讓其它對象來設置和查詢x的數(shù)值的):
  class AnIntegerNamedX {
  int x;
  public int x() {
  return x;
  }
  public void setX(int newX) {
  x = newX;
  }
  }
  每次你從類實例化新對象的時候,你就得到了類實例變量的一個新副本。這些副本跟新對象是聯(lián)系在一起的。因此,每次你實例化一個新AnIntegerNamedX對象的時候,你就得到了一個和AnintegerNamedX對象有聯(lián)系的x的新副本。
  類的所有實例共享了一個實例方法的相同實現(xiàn)。AnIntegerNamedX的所有實例共享了x和setX的相同實現(xiàn)。這里注重兩個方法x和setX都引用了對象的實例變量x。但是你可能會問“假如AnIntegerNamedX的所有實例共享了x和setX的相同實現(xiàn),這不會模棱兩可嗎?”,答案當然是:不是。在實例方法中,實例變量的名字是引用了當前對象的實例變量。因此,在x和setX中x就等價于這個x,不會產(chǎn)生模棱兩可的情況。
  AnIntegerNamedX外部的對象假如想訪問x,必須通過AnIntegerNamedX的一個特定實例來實現(xiàn)。假如下面的代碼段是在其它對象的方法中,它包含了兩種不同AnIntegerNamedX類型的對象,并且設置x為不同的數(shù)值,然后顯示出來:
  . . .
  AnIntegerNamedX myX = new AnIntegerNamedX();
  AnIntegerNamedX anotherX = new AnIntegerNamedX();
  myX.setX(1);
  anotherX.x = 2;
  System.out.println("myX.x = " + myX.x());
  System.out.println("anotherX.x = " + anotherX.x());
  . . .
  這里值得注重,代碼使用setX來設置myX的x數(shù)值,而直接賦值給anotherX.x。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤台县| 南投县| 墨竹工卡县| 渝中区| 淳安县| 屏东市| 乌兰县| 如皋市| 嘉义县| 临汾市| 泰和县| 新晃| 高尔夫| 沭阳县| 义马市| 商洛市| 应用必备| 衡山县| 南川市| 金山区| 治县。| 马山县| 犍为县| 社旗县| 莲花县| 民和| 布拖县| 阿荣旗| 石狮市| 弥渡县| 凤城市| 安福县| 绥芬河市| 宜春市| 交口县| 静宁县| 利辛县| 比如县| 南通市| 嘉荫县| 罗田县|