日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

内部类的分类及其定义

發(fā)布時(shí)間:2025/5/22 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内部类的分类及其定义 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、成員內(nèi)部類
代碼:

public class Test10 {public static void main(String[] args) {/*方式1創(chuàng)建成員內(nèi)部類對(duì)象*/C c = new C();C.D d = c.new D();/*方式2創(chuàng)建成員內(nèi)部類對(duì)象*/C.D d1 = c.getClassD();} } class C{private String name = "外部類";public void run(){System.out.println("外部類奔跑");}/*創(chuàng)建一個(gè)返回D對(duì)象的方法*/public D getClassD(){return new D();}/*使用內(nèi)部類的屬性和方法*/public void eat(){D d = new D();System.out.println(d.value);d.say();}class D{private String value = "DDD";private String name = "內(nèi)部類";public void say(){System.out.println(C.this.name);System.out.println(name);run();}} }

1、Inner類定義在Outer類的內(nèi)部,相當(dāng)于Outer類的成員變量的位置,Inner類可以使用任意訪問(wèn)修飾符,如:public、private、protected等。
2、Inner類中定義的test()方法可以訪問(wèn)Outer類中的數(shù)據(jù),不受訪問(wèn)控制符的影響。

3、 定義了成員內(nèi)部類后,必須使用外部類對(duì)象來(lái)創(chuàng)建內(nèi)部類對(duì)象,而不能直接去 new 一個(gè)內(nèi)部類對(duì)象,即:內(nèi)部類 對(duì)象名 = 外部類對(duì)象.new 內(nèi)部類( );如創(chuàng)建Inner的內(nèi)部類對(duì)象:要先創(chuàng)建外部類對(duì)象:Outer o = new outer(); 創(chuàng)建內(nèi)部類:Inner i = o.new Inner();訪問(wèn)Inner中的test()方法:i.test();
4、如果外部類和內(nèi)部類具有相同的成員變量或方法,內(nèi)部類可以直接訪問(wèn)內(nèi)部類的成員變量或方法,但如果內(nèi)部類訪問(wèn)外部類的成員變量或者方法時(shí),需要使用this關(guān)鍵字

二、靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類就是用static修飾的內(nèi)部類
1、靜態(tài)內(nèi)部類不能直接訪問(wèn)外部類的非靜態(tài)成員,但,可以通過(guò)new 外部類().成員的方式訪問(wèn);

2、如果外部類的靜態(tài)成員與內(nèi)部類的靜態(tài)成員相同, 可以通過(guò)"類名.靜態(tài)成員"來(lái)訪問(wèn)外部類的靜態(tài)成員;如果不同,可以直接調(diào)用外部類的靜態(tài)成員名。

三、局部?jī)?nèi)部類

//在局部位置,可以創(chuàng)建內(nèi)部類對(duì)象,通過(guò)對(duì)象調(diào)用和內(nèi)部類方法 class Outer {private int age = 20;public void method() {final int age2 = 30;class Inner {public void show() {System.out.println(age);//從內(nèi)部類中訪問(wèn)方法內(nèi)變量age2,需要將變量聲明為最終類型。System.out.println(age2);}}Inner i = new Inner();i.show();} }

為什么局部?jī)?nèi)部類訪問(wèn)局部變量必須加final修飾呢?
因?yàn)榫植孔兞渴请S著方法的調(diào)用而調(diào)用,使用完畢就消失,而堆內(nèi)存的數(shù)據(jù)并不會(huì)立即消失。
所以,堆內(nèi)存還是用該變量,而該變量已經(jīng)沒(méi)有了。為了讓該值還存在,就加final修飾。
原因是,當(dāng)我們使用final修飾變量后,堆內(nèi)存直接存儲(chǔ)的是值,而不是變量名。

四、匿名內(nèi)部類
本質(zhì):其實(shí)是繼承該類或者實(shí)現(xiàn)接口的子類匿名對(duì)象

interface Inter {public abstract void show(); }class Outer {public void method(){new Inner() {public void show() {System.out.println("HelloWorld");}}.show();} }class Test {public static void main(String[] args) {Outer o = new Outer();o.method();} }

總結(jié)

以上是生活随笔為你收集整理的内部类的分类及其定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。