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

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

總結篇:將內部類進行到底

2019-11-18 12:12:18
字體:
來源:轉載
供稿:網友

  總結了一下內部類的一下特性和輕易出錯的地方,給大家看看~~
  有什么錯誤,望指正~~~
  
  (一)
  java1.1以后版本添加了嵌套類(Inner Class,嵌套類、內部類)。嵌套類定義在類(外部類)里面。
  嵌套類可以體現邏輯上的從屬關系。同時對于其他類可以控制內部類不可見等。
  外部類的成員變量作用域是整個外部類,包括嵌套類。但外部類不能訪問嵌套類的PRivate成員。例子:
  public class Outer {
   private int size;
   public class Inner{
   private int counter = 10;
   public void doStuff(){ size++; }
   }
   public static void main(String args[]){
   Inner inner= new Inner();
   inner.doStuff();
   System.out.println(size);
   System.out.println(inner.counter);
   System.out.println(counter); //編譯錯
   }
  }
  
  (二)下面演示了如何在外部類之外實例出一個public Inner類對象。
  
  類名前加上外部類類名,new語句前加上外部類的引用變量。這很類似package的使用。
  例子:
  public class Outer {
   private int size;
   public class Inner{
   public void doStuff(){ size++; }
   }
  }
  
  public class TestInner{
   public static void main(String args[]){
   Outer outer = new Outer();
   Outer.Inner inner = outer.new Inner();
   inner.doStuff();
   }
  }
  (三)當內部類與外部類有同名變量時,缺省指本類中的變量。
  例子:public class Outer {
   private int size;
   public class Inner{
   private size;
   public void doStuff(int size){
   size++; this.size++;
   Outer.this.size++; // 錯誤,Outer.size++因為size不是靜態變量
   }
   }
   public static void main(String args[]){
   this.size++; //錯誤,靜態方法使用非靜態變量this
   }
  }
  (四)在方法中定義一個嵌套類,注重嵌套類不可以訪問方法的局部變量。
  因為方法的局部變量只存在與方法作用期間,故localvalue不可訪問。而final變量的生命周期超出了方法,所以fianlvalue可用。
  public class Outer {
   private int size =5;
   public Object makeTheInner(int localvalue){
   final int finalvalue = 6;
   class Inner{
   public String toString(){return (“Inner is”+size+localvalue+finalvalue);}
   }
   return new Inner();
   }
  
   public static void main(String args[]){
   Outer outer = new Outer();
   Object obj = outer.makeTheInner(47);
   System.out.println(“The object is” + obj);
   }
  }
  (五)
   嵌套類的類名必須與包裝它的外部類區別,且嵌套類的類名僅僅可以作用于定義范圍中。方法中定義類,其類名名就只能出現在方法中。
   定義在方法中的嵌套類只能使用定義為final的局部變量,不可以使用方法中的非靜態變量。
  嵌套類可以使用的變量種類包括:類變量、實例變量、final局部變量。
  嵌套類同樣具有所有的訪問控制權限。高級類屬性:
  嵌套類可以是abstract類
  嵌套類可以是接口,被其它嵌套類實現。
  定義為static的內部類將成為頂級類(top-level)。它們不依靠于外部類的對象而生成,所以不可以訪問外部類的對象成員。
  非static內部類不能定義static成員
  當外部類編譯時,內部類也會編譯,生成的類文件格式為:
  OuterClass$InnerClass,如Outer$Inner.class
  
  例子:
  class Outer {
   private int size =5;
   static class Inner{
   int value=5;
   public void doStuff(){ size+=value; }// 錯誤,不能訪問非static 外部類程序
   }
  }
  
  public class TestInner{
   public static void main(String args[]){
   Outer outer = new Outer();
   Inner inner = new Inner();// 這種實例也不對
  應該 Out.Inner innner=new Outer.Inner() ;
   }
  }
  
  在總結的第(五)里面,
  非static內部類不能定義static成員 ,
  (1)定義 static 的 內部類, 假如成員變量也定義成 static ,那么外圍類可以直接通過類名來訪問。
  (2)定義 static 的 內部類, 假如成員變量不是 static ,那么外圍類需要生成內部類的對象才能訪問,否則直接訪問導致編譯出錯!!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白朗县| 德格县| 名山县| 安溪县| 武定县| 安国市| 邯郸县| 望都县| 白沙| 铜山县| 呼玛县| 鄄城县| 东平县| 陆河县| 东山县| 呼伦贝尔市| 三江| 重庆市| 容城县| 远安县| 原阳县| 湖北省| 大悟县| 酒泉市| 云南省| 鄢陵县| 海晏县| 长宁县| 会宁县| 印江| 英德市| 高雄市| 黄平县| 巴中市| 新竹县| 连南| 唐海县| 宣威市| 凤台县| 福建省| 濮阳市|