上一節(jié)我們學(xué)習(xí)了內(nèi)部類,這一節(jié)我們來學(xué)習(xí)匿名類。那什么叫做匿名類呢?顧名思義,匿名類就是不能有名字的類,它們不能被引用,只能在創(chuàng)建時用new語句來聲明它們。
使用匿名內(nèi)部類我們必須要繼承一個父類或者實現(xiàn)一個接口。
需要注意的是:
1)匿名內(nèi)部類中是不能定義構(gòu)造函數(shù)的。
2)匿名內(nèi)部類中不能存在任何的靜態(tài)成員變量和靜態(tài)方法。
3)匿名內(nèi)部類為局部內(nèi)部類,所以局部內(nèi)部類的所有限制同樣對匿名內(nèi)部類生效。
匿名類語法格式如下:
class outerClass { // 定義一個匿名類 object1 = new Type(parameterList) { // 匿名類代碼 }; }
注意:因為匿名類是表達式形式定義的,所以末尾以分號;來結(jié)束。
1. 匿名類繼承一個父類
例如:
class Dotcpp { public void display() { System.out.println("在Dotcpp類內(nèi)部"); } } class AnonymousDemo { public void createClass() { //創(chuàng)建的匿名類繼承了Dotcpp類 Dotcpp d1 = new Dotcpp() { public void display() { System.out.println("在匿名類內(nèi)部"); } }; d1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
運行結(jié)果如下:
在匿名類內(nèi)部
2. 匿名類實現(xiàn)一個接口
例如:
interface Dotcpp { public void display(); } class AnonymousDemo { public void createClass() { //創(chuàng)建的匿名類實現(xiàn)了Dotcpp接口 Dotcpp d1 = new Dotcpp() { public void display() { System.out.println("在匿名類內(nèi)部"); } }; d1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
運行結(jié)果如下:
在匿名類內(nèi)部
好了,大家可以上機實驗,消化吸收本節(jié)內(nèi)容。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程