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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

內(nèi)部類

2019-11-08 02:06:51
字體:
供稿:網(wǎng)友

概念:內(nèi)部類( Inner Class )就是定義在另外一個類里面的類。與之對應(yīng),包含內(nèi)部類的類被稱為外部類

內(nèi)部類的主要作用如下:

內(nèi)部類提供了更好的封裝,把內(nèi)部類隱藏在外部類之中,不允許同一個包中的其他文件訪問該類。內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù),包括私有數(shù)據(jù)。內(nèi)部類所實(shí)現(xiàn)的功能外部類同樣可以實(shí)現(xiàn),只是有時內(nèi)部類更方便。 問:內(nèi)部類有幾種呢?

內(nèi)部類可分為以下幾種:

成員內(nèi)部類靜態(tài)內(nèi)部類方法內(nèi)部類匿名內(nèi)部類

代碼如下:

public class HelloWorld { // 內(nèi)部類Inner,類Inner在類HelloWorld的內(nèi)部 public class Inner { // 內(nèi)部類的方法 public void show() { System.out.注意如何創(chuàng)建內(nèi)部類對象

Inner i=hello.new Inner();

內(nèi)部類 從上面的代碼中我們可以看到,成員內(nèi)部類的使用方法:

1、 Inner 類定義在 Outer 類的內(nèi)部,相當(dāng)于 Outer 類的一個成員變量的位置,Inner 類可以使用任意訪問控制符,如 public 、 protected 、 private 等

2、 Inner 類中定義的 test() 方法可以直接訪問 Outer 類中的數(shù)據(jù),而不受訪問控制符的影響,如直接訪問 Outer 類中的私有屬性a

3、 定義了成員內(nèi)部類后,必須使用外部類對象來創(chuàng)建內(nèi)部類對象,而不能直接去 new 一個內(nèi)部類對象,即:內(nèi)部類 對象名 = 外部類對象.new 內(nèi)部類( );

4、 編譯上面的程序后,會發(fā)現(xiàn)產(chǎn)生了兩個 .class 文件

友情提示:

外部類不能直接訪問內(nèi)部類的成員或方法,應(yīng)創(chuàng)建內(nèi)部類的對象來訪問其成員或方法如果外部類和內(nèi)部類具有相同的成員變量或方法,內(nèi)部類默認(rèn)訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用 this 關(guān)鍵字。如: 這里寫圖片描述

靜態(tài)內(nèi)部類 靜態(tài)內(nèi)部類是 static 修飾的內(nèi)部類,這種內(nèi)部類的特點(diǎn)是: 1、 靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過 new 外部類().成員 的方式訪問

2、 如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱相同,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員;如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱不相同,則可通過“成員名”直接調(diào)用外部類的靜態(tài)成員

3、 創(chuàng)建靜態(tài)內(nèi)部類的對象時,不需要外部類的對象,可以直接創(chuàng)建 內(nèi)部類 對象名= new 內(nèi)部類();

靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過new 外部類().成員 的方式訪問如果外部類的靜態(tài)成員于內(nèi)部類的成員相同,可通過 “類名,靜態(tài)成員”訪問外部成員的靜態(tài)成員。如果不相同,可直接通過成員名調(diào)用外部類的靜態(tài)成員創(chuàng)建靜態(tài)內(nèi)部類的對象時,不需要外部類的對象,可以直接創(chuàng)建 內(nèi)部類 對象名=new 內(nèi)部類();package com.zhongli;public class HelloWorld { // 外部類中的靜態(tài)變量score private static int score = 84; int a=96; // 創(chuàng)建靜態(tài)內(nèi)部類 public static class SInner { // 內(nèi)部類中的變量score int score = 91; public void show() { System.out.println("訪問外部類的非靜態(tài)成員"+new HelloWorld().a); System.out.println("訪問外部類中的score:" + HelloWorld.score); System.out.println("訪問內(nèi)部類中的score:" + score); } } // 測試靜態(tài)內(nèi)部類 public static void main(String[] args) { // 直接創(chuàng)建內(nèi)部類的對象 SInner si=new SInner(); // 調(diào)用show方法 si.show(); }}

結(jié)果為: 訪問外部類的非靜態(tài)成員96 訪問外部類中的score:84 訪問內(nèi)部類中的score:91


方法內(nèi)部類: 方法內(nèi)部類就是內(nèi)部類定義在類的方法中,方法內(nèi)部類只能在該方法中可見,即只能在該方法中使用。

package com.zhongli;//外部類public class HelloWorld { private String name = "愛慕課"; // 外部類中的show方法 public void show() { // 定義方法內(nèi)部類 class MInner { int score = 83; public int getScore() { return score + 10; } } // 創(chuàng)建方法內(nèi)部類的對象 MInner mi=new MInner(); // 調(diào)用內(nèi)部類的方法 int newScore=mi.getScore(); System.out.println("姓名:" + name + "/n加分后的成績:" + newScore); } // 測試方法內(nèi)部類 public static void main(String[] args) { // 創(chuàng)建外部類的對象 HelloWorld mo=new HelloWorld(); // 調(diào)用外部類的方法 mo.show(); }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黎城县| 扶风县| 东乡| 灵山县| 旺苍县| 老河口市| 米泉市| 黑龙江省| 井冈山市| 阳信县| 长白| 朝阳区| 玛多县| 安宁市| 苍梧县| 周宁县| 额尔古纳市| 丘北县| 齐河县| 鄂托克旗| 迁西县| 南川市| 定襄县| 邓州市| 邯郸市| 稷山县| 长海县| 临沂市| 筠连县| 木里| 贺兰县| 五华县| 汤阴县| 耿马| 潞城市| 钟祥市| 天津市| 沐川县| 盖州市| 长白| 拉孜县|