网站大量收购独家精品文档,联系QQ:2885784924

java内部类和匿名类从入门到深入.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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(){

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档