- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java内部类和匿名类从入门到深入
1 内部类内部类定义:在A类的内部但是所有方法的外部定义了一个B类,则B类就是A类的内部类,A是B的外部类内部类访问原则内部类的方法可以访问外部类所有的成员外部类的方法不可以直接访问内部类的成员内部类的优点:可以让一个类方便的访问另一个类中的所有成员增加程序的安全性,有效避免其他不相关类对该类的访问何时使用内部类如果一个A类要使用B类的所有成员,并且A类不需要被除B类以外的其他类访问,则我们应当把A类定义为B类的内部类class A{private inti = 1;private void f(){}//B是A的内部类class B{public int bi = 10;//非静态的内部类可以访问外部类所有的成员public void g(){System.out.printf(i = %d\n, i);f(); }}public void k(){//g(); //error 外部类的方法不可以直接访问内部类的成员//System.out.println(bi); //error 外部类的方法不可以直接访问内部类的成员B bb = new B();bb.g();}}public class Test{public static void main(String[] args){A aa = new A();aa.k();}}本程序证明了:外部类的方法不可以直接访问内部类的成员内部类的方法却可以访问外部类的所有成员匿名类匿名类是一种特殊的内部类如果在一个方法内部定义了一个匿名类,则该匿名类可以访问外部类的所有成员包裹本匿名类的方法中的所有final类型的局部变量,非fianl类型的局部变量无法被匿名类访问import java.awt.*;import java.awt.event.*;public class TestWindow{public static void main(String[] args){//如果把10行的final去掉,本程序在18行就会报错, //因为匿名类只能访问包裹它的方法中的final类型的局部变量final Frame f = new Frame(); //10f.setSize(200, 200);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){f.setVisible(false);//18行System.exit(-1);}});f.setVisible(true);}}创建匿名类的三种方式继承父类实现接口实现抽象类创建匿名类之实现接口假设A是接口名格式:new A(){实现接口中方法的代码};功能:生成一个实现了A接口的匿名类创建匿名类之实现抽象类假设A是抽象类格式:new A(){实现了A类的所有抽象类的方法代码添加自己的方法或属性代码【不建议,因为没有实际意义】}功能:生成一个匿名类,该匿名类必须得实现了A类的所有抽象方法,当然该匿名类也可以定义自己的属性和方法创建匿名类之继承父类假设A是个类名格式:new A(){重写了A类的方法代码添加自己的属性和方法【不建议,因为没有实际意义】}功能:生成一个A类的子类对象,该匿名类对象继承了A的所有非private成员class A{private inti = 1;private void f(){System.out.println(哈哈);}//B是A的内部类class B{public int bi = 10;//非静态的内部类可以访问外部类所有的成员public void g(){System.out.printf(i = %d\n, i);f(); }}public void k(){//g(); //error 外部类的方法不可以直接访问内部类的成员//System.out.println(bi); //error 外部类的方法不可以直接访问内部类的成员B bb = new B();bb.g();}}public class Test{public static void main(String[] args){A aa = new A();aa.k();}}/*假设A是接口名new A(){实现接口中方法的代码};功能:生成一个实现了A接口的匿名类*/interface It{void f();//void g(); // 如果该语句生效的话,21行到27行的代码中就必须的实现g方法}public class TestAnonyClass_1{public static void main(String[] args){It it = new It(){
您可能关注的文档
- GerberRS274XCAM文件格式-141128.doc
- GG-MB-XZ-201508031幕墙监理实施细则.doc
- GG-MB-XZ-201508015钢箱梁制作及吊装专项施工监理实施细则.doc
- GG-MB-XZ-201508037强夯基础监理实施细则doc.doc
- GG-MB-XZ-201508051悬挑架监理实施细则.doc
- GG-MB-XZ-201508057桩基工程监理细则.doc
- GGJL-标无砟轨道监理实施细则.doc
- GG-MB-XZ-201508056转换层监理实施细则doc.doc
- GH-951A电动剥离试验机说明书.doc
- GlobalAutomotivePistonRing(汽车活塞环)MarketProfessionalSurveyReport2017目录.docx
- 北京市石景山区2024-2025学年高二(上)期末物理试卷【含解析】.docx
- 商业地产中拉萨餐饮业的多元化经营策略.docx
- 《学会打电话》(说课稿)五年级下册综合实践活动安徽大学版[001].docx
- 北京市丰台区2024-2025学年高一(上)期末物理试卷-【含解析】.docx
- 国际财务会计准则-IFRS基础和应用.pptx
- 小学一年级下学期语文学习资源整合计划.docx
- 北京市海淀区2024-2025学年高一(上)期末物理试卷【含解析】.docx
- 北京市东城区2024-2025学年高二(上)期末物理试卷【含解析】.docx
- 医学--靶向药物汇总分析.ppt
- 提升教学质量从汇报工作开始.docx
最近下载
- 2024完整解读英语课程新课标《义务教育英语课程标准(2024年版)》动态PPT内容课件.pptx VIP
- 中东第二课时复习课件七年级地理下学期人教版.pptx
- 人工湿地常用植物名录.docx
- 《尚书》原文注释译文.doc VIP
- Docker容器技术与应用Docker镜像管理.pptx VIP
- Docker容器技术教案Docker镜像管理教案 (2).doc VIP
- Docker容器技术教案Docker镜像管理教案 (8).doc VIP
- Docker容器技术教案 Docker编排与部署教案 (4).doc VIP
- Docker容器技术教案Docker镜像管理教案 (1).doc VIP
- Docker容器技术教案Docker镜像管理教案 (7).doc VIP
文档评论(0)