国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 城步| 绥宁县| 道真| 同仁县| 玉树县| 双流县| 丹凤县| 云霄县| 聂荣县| 门源| 辛集市| 济阳县| 德保县| 柞水县| 哈密市| 城市| 澄城县| 宁陕县| 保山市| 安仁县| 梨树县| 宕昌县| 黑龙江省| 翼城县| 黔西县| 澜沧| 望都县| 海林市| 邵阳市| 象州县| 潜江市| 彭泽县| 达尔| 琼海市| 明星| 涡阳县| 上林县| 高雄县| 土默特右旗| 屏东市| 贵州省|