电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳細分析Java內部類——局部內部類

瀏覽:23日期:2022-08-26 14:48:23

今天介紹第二種內部類——局部內部類。

局部內部類是什么?顧名思義,那就是定義在局部內部的類(逃)。開玩笑的,局部內部類就是定義在代碼塊、方法體內、作用域(使用花括號“{}”括起來的一段代碼)內的類。局部內部類有以下特性:

局部內部類只能在代碼代碼塊、方法體內和作用域中使用。 局部內部類同樣可以無限制調用外部類的方法和屬性。 可以使用abstract修飾,聲明為抽象類。

舉個栗子:

public class Outer2 { public void print(){ class Inner2{ public void test(){ System.out.println('Inner.print()'); } } Inner2 inner2 = new Inner2(); inner2.test(); }}

public class Test { public static void main(String[] args) { Outer2 outer2 = new Outer2(); outer2.print(); }}

這里的Inner2類僅僅在Outer2的print方法中被使用,有效范圍也僅在print函數之內。

通過這段玩具代碼,可能無法理解為什么java中要出現這樣限制這么多而且挺復雜的東西。讓我們來看看之前的栗子:Java中的回調

這里把代碼復制過來:

public class TimePrinter implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println('Time is ' + now + ' now.'); }}

public class Test { public static void main(String[] args) { ActionListener listener = new TimePrinter(); Timer t = new Timer(1000,listener); t.start(); JOptionPane.showMessageDialog(null,'Quit program?');//彈出對話框,防止主線程結束導致時鐘結束 System.exit(0); }}

在這里,我們想要創建一個Timer時,需要往里面傳入一個實現了ActionListener接口的對象,而這個對象僅僅在該方法中使用了一次,這時候內部類的優勢就體現出來了,把類封裝在方法中,不向外界提供任何冗余信息:

public class Test { public static void main(String[] args) { class InnerTimePrinter implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println('Time is ' + now + ' now.'); } } ActionListener listener = new InnerTimePrinter(); Timer t = new Timer(1000,listener); t.start(); JOptionPane.showMessageDialog(null,'Quit?'); System.exit(0); }}

你也許會覺得,這樣好像只是把類簡單的挪到了另一個類里面,并沒有什么luan用。

表面上,確實如此,但事實上,還是有很多luan用的。

在《Think in java》中有這樣一句話:使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的)實現,對于內部類都沒有影響。

我們都知道,java中是不能實現多繼承的,接口也正是為了對多繼承的補充完善給出的方案。而我們程序設計中有時候會存在一些使用接口很難解決的問題,這個時候我們可以利用內部類提供的、可以繼承多個具體的或者抽象的類的能力來解決這些程序設計問題。可以說,接口只是解決了部分問題,而內部類使得多重繼承的解決方案變得更加完整。

據個人經驗,局部內部類確實用的不多,但不常用不代表沒有用,知道有這樣一個神奇的內部類存在,了解過它的特性之后,可以為你日后的需求提供更多的方案。

至此,本篇講解完畢,歡迎大家繼續關注!

以上就是詳細分析Java內部類——局部內部類的詳細內容,更多關于Java 局部內部類的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 微学堂-电动能源汽车评测_电动车性能分享网| 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 酒店厨房设计_中央厨房设计_北京商用厨房设计公司-奇能商厨 | 北京公寓出租网-北京酒店式公寓出租平台 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 广东泵阀展|阀门展-广东国际泵管阀展览会 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 分轨 | 上传文件,即刻分离人声和伴奏| 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 免费网站网址收录网_海企优网站推荐平台 | 精密模具加工制造 - 富东懿| 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 |