一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - JAVA 內部類詳解及實例

JAVA 內部類詳解及實例

2020-07-06 14:27java教程網 JAVA教程

這篇文章主要介紹了JAVA 內部類詳解及實例的相關資料,需要的朋友可以參考下

JAVA 內部類

一、什么是內部類?

  一個類的定義放在另一個類的內部,這個類就叫做內部類

二、內部類有那些特性?

  1、內部類仍然是一個獨立的類,在編譯之后內部類會被編譯成獨立的.class文件,但是前面冠以外部類的類名和$符號 。
  2、內部類不能用普通的方式訪問。內部類是外部類的一個成員,因此內部類可以自由地訪問外部類的成員變量,無論是否是private的 。
  3、內部類聲明成靜態的,就不能隨便的訪問外部類的成員變量了,此時內部類只能訪問外部類的靜態成員變量 。

三、內部類有哪幾種?

  1.成員內部類

    如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.test01;
 
public class A {
  // 內部類 B 繼承 TestPojo 和實現 TestInterface 接口
  class B extends TestPojo implements TestInterface{
    //內部類 B 自己的方法
    public void run(){
      System.out.println("我正在跑!");
    }
    //重寫的接口方法
    public void testf() {
      System.out.println("實現接口!");
    }
  }
  // 方法里面調用內部類
  public void test(){
    B b = new B() ;
    b.testf() ;    // 掉用重寫接口方法
    b.run() ;     // 調用自己的方法
    b.testpojo() ;   // 調用繼承父類的方法
  }
  // main 方法測試
  public static void main(String[] args) {
    A a = new A() ;
    a.test() ;
  }
}
// 定義了一個接口 ,方法為testf()
interface TestInterface{
  public void testf() ;
}
// 定義了一個普通類 方法testpojo()
class TestPojo{
  public void testpojo(){
    System.out.println("我是簡單的pojo類");
  }
}
// 實現 調用內部類里面的方法
class Textone{
  public static void main(String[] args) {
    A.B b = new A().new B() ;  //調用類A里面的內部類B
    /** 等同于 下面代碼
     *     A a = new A() ;
     *     A.B b = a.new B() ;
     * */
    b.testf() ;   // 掉用重寫接口方法
    b.run() ;    // 調用自己的方法
    b.testpojo() ;  // 調用繼承父類的方法
  }
}

  2、方法內部類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test01;
 
public class PerTest {
  public void test(){     // 定義一個方法
    class Ne{        // 定義一個方法內部類
      public void fle(){  // 定義方法內部類的方法
        System.out.println("我正在飛翔!");
      }
    } ;
    new Ne().fle() ;    //調用內部類的方法
  }
  public static void main(String[] args) {
    new PerTest().test() ;  //測試
  }
}

  注意: (1)、方法內部類只能在定義該內部類的方法內實例化,不可以在此方法外對其實例化。

      (2)、方法內部類對象不能使用該內部類所在方法的非final局部變量。        

      因為方法的局部變量位于棧上,只存在于該方法的生命期內。當一個方法結束,其棧結構被刪除,
      局部變量成為歷史。但是該方法結束之后,在方法內創建的內部類對象可能仍然存在于堆中!
      例如,如果對它的引用被傳遞到其他某些代碼,并存儲在一個成員變量內。正因為不能保證局部變
      量的存活期和方法內部類對象的一樣長,所以內部類對象不能使用它們。 (該理解來源于百度百科)

   3、匿名內部類

      1)、抽象匿名內部類    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.anonymous;
 
public class AbstractClass {
  public void test(){        //方法為test
    TestA a = new TestA(){    //實現抽象類
      @Override
      public void run() {    //實現抽象類的方法
        System.out.println("我正在使用抽象匿名內部類");
      }
    } ;
    a.run() ;          //調用內部類的方法
  }
  public static void main(String[] args) {
    new AbstractClass().test() ;  //測試
  }
}
//定義一個抽象類 TestA 抽象方法為run()
abstract class TestA{
  public abstract void run() ;
}

    2)、接口匿名內部類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.anonymous;
 
public class TestAnonymous {
  MyInterface m = new MyInterface(){  //實現接口
    public void eat() {        //重寫MyInterface 接口方法
      System.out.println("我正在吃飯!");
    }
  } ;
  public void ss(){  //方法ss
    m.eat() ;    //調用重寫的方法
  }
  public static void main(String[] args) {
    new TestAnonymous().ss() ;  //測試
  }
}
//定義一個接口 方法為 eat
interface MyInterface{
  public void eat() ;
}

  注意:匿名內部 類 可以定義在方法內也可以定義在類的成員中,不管是那種匿名內部類都不能被外部類直接調用

四、內部類的作用?

  每個內部類都能獨立地繼承自一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的)實現,對于內部類都沒有影響。如果沒有內部類提供的可以繼承多個具體的或抽象的類的能力,一些設計與編程問題就很難解決。從這個角度看,內部類使得多重繼承的解決方案變得完整。

接口解決了部分問題,而內部類有效地實現了“多重繼承”。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 麻豆网站在线免费观看 | 明星ai人脸替换造梦在线播放 | 免费看日本 | 99视频有精品 | julia ann一hd| 五月最新商场女厕所高跟嘘嘘 | 色综合久久综合网欧美综合网 | 99精品视频免费在线观看 | 性色AV乱码一区二区三区视频 | 嗯啊视频在线观看 | 国产人成激情视频在线观看 | 超级乱淫伦小说1女多男 | 欧美四虎影院 | 久久国产加勒比精品无码 | 999久久精品国产 | 国产japanese孕妇孕交 | 亚州笫一色惰网站 | 日韩网站在线 | 免费网站国产 | 免费370理论片中文字幕 | 爱爱小视频免费看 | 奇米777四色精品综合影院 | 亚洲精品人成网在线播放影院 | 风间由美一区二区播放合集 | 国产精品免费精品自在线观看 | 国产亚洲精品精品国产亚洲综合 | 国产一区二区三区久久小说 | 亚洲国产成人在人网站天堂 | 欧美国产视频 | 国产精品www | 国产综合欧美日韩视频一区 | 嗯啊好爽视频 | 亚洲国产欧美日韩在线一区 | 国产成人精品免费视频大全五级 | 欧美一级在线全免费 | 精品免费久久久久久影院 | 加勒比久草 | 99精品全国免费7观看视频 | 韩国黄色网址 | 非洲黑人gay巨大 | 小舞丝袜调教喷水沦为肉奴 |