java 內(nèi)部類(lèi)的詳解及實(shí)例
java 內(nèi)部類(lèi)的詳解及實(shí)例
內(nèi)部類(lèi)的存在意義:
每個(gè)內(nèi)部類(lèi)都能獨(dú)立地繼承自一個(gè)(接口的)實(shí)現(xiàn),所以無(wú)論外圍類(lèi)是否已經(jīng)繼承了某個(gè)(接口的)實(shí)現(xiàn),對(duì)于內(nèi)部類(lèi)都沒(méi)有影響。內(nèi)部類(lèi)使得多重繼承的解決方案變得完整。接口解決了部分問(wèn)題,二內(nèi)部類(lèi)有效地實(shí)現(xiàn)了“多重繼承”。(這是《Java編程思想》里面的解釋)
代碼:
public class OuterAndInnerClass
{
public static void main(String[] args)
{
//創(chuàng)建內(nèi)部類(lèi)對(duì)象的方法一
//Outer.Inner inner = new Outer().new Inner();
//創(chuàng)建內(nèi)部類(lèi)對(duì)象的方法二
Outer outer = new Outer();
Outer.Inner inner = outer.getInner();
inner.output();
//驗(yàn)證方法里面的內(nèi)部類(lèi)
outer.test();
}
}
class Outer
{
int[] items = {1,2,3,4};
class Inner
{
//內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的成員變量以及方法
public void output(){
for(int i = 0; i<items.length; i++){
System.out.println(items[i]+"");
}
}
};
public Inner getInner(){
return new Inner(); //匿名內(nèi)部類(lèi),如果需要,匿名內(nèi)部類(lèi)里面可以寫(xiě)各種屬性以及方法體
}
//在方法里面創(chuàng)建一個(gè)內(nèi)部類(lèi)(其實(shí)可以在需要的地方創(chuàng)建內(nèi)部類(lèi))
public void test(){
class MethodInnerClass
{
public void innerMethod(){
System.out.println("這是方法里面的內(nèi)部類(lèi)");
}
};
MethodInnerClass methodInnerClass = new MethodInnerClass();
methodInnerClass.innerMethod();
}
};
接口里面也可以定義內(nèi)部類(lèi):
interface InterfaceInnerClass
{
void f();
//注意:這里使用java InterfaceInnerClass.java編譯,使用java InterfaceInnerClass$Test運(yùn)行
class Test implements InterfaceInnerClass
{
public void f(){
System.out.println("Hello World!");
}
public static void main(String[] args)
{
new Test().f();
}
};
}
以上就是java 內(nèi)部類(lèi)的實(shí)例詳解,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
JPA設(shè)置默認(rèn)字段及其長(zhǎng)度詳解
JPA是Java Persistence API的簡(jiǎn)稱,中文名Java持久層API,是JDK 5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。本文主要介紹了JPA如何設(shè)置默認(rèn)字段及其長(zhǎng)度,感興趣的同學(xué)可以了解一下2021-12-12
java執(zhí)行shell并獲取shell輸出日志方式
這篇文章主要介紹了java執(zhí)行shell并獲取shell輸出日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
SpringBoot排除不需要的自動(dòng)配置類(lèi)DataSourceAutoConfiguration問(wèn)題
這篇文章主要介紹了SpringBoot排除不需要的自動(dòng)配置類(lèi)DataSourceAutoConfiguration問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
解決swagger主頁(yè)訪問(wèn),返回報(bào)錯(cuò)500問(wèn)題
在使用Swagger時(shí)遇到500錯(cuò)誤,通過(guò)仔細(xì)的debug發(fā)現(xiàn)問(wèn)題源于注解使用不當(dāng),具體表現(xiàn)為一個(gè)接口的入?yún)⒈诲e(cuò)誤地注解了三個(gè)參數(shù),而實(shí)際上只有兩個(gè),這導(dǎo)致了Swagger在解析時(shí)拋出了NullPointerException異常,解決方法是刪除錯(cuò)誤的第三個(gè)參數(shù)的注解2024-09-09
java實(shí)現(xiàn)計(jì)算周期性提醒的示例
本文分享一個(gè)java實(shí)現(xiàn)計(jì)算周期性提醒的示例,可以計(jì)算父親節(jié)、母親節(jié)這樣的節(jié)日,也可以定義如每月最好一個(gè)周五,以方便安排會(huì)議2014-04-04
SpringBoot整合模板引擎過(guò)程代碼實(shí)例
這篇文章主要介紹了SpringBoot整合模板引擎過(guò)程代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計(jì)優(yōu)化方案
今天小編就為大家分享一篇關(guān)于Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計(jì)優(yōu)化方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04

