java内部类讲解课件.ppt

java内部类讲解课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 1-* 1 Java内部类 什么是内部类 内部类是指在一个外部类的内部再定义一个类。 特点: 独立的一个Class文件 同样需要编译 同样可以产生对象 为什么要用内部类 使用内部类最吸引人的原因是: 每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。 学会使用内部类,是掌握Java高级编程的一部分, 它可以让你更优雅地设计你的程序结构 . 内部类的分类 成员内部类 局部内部类 静态内部类 匿名内部类 成员内部类 作为外部类的一个成员存在,与外部类的属性、方法并列。 特点: 1、内部类中不允许定义静态变量 2、内部类和外部类的相同的成员变量可以共存 成员内部类 访问方式: 1、在内部类内部: 在内部类中访问内部类自己的变量直接用变量名 在内部类中访问内部类自己的变量也可以用this.变量名 在内部类中访问外部类中与内部类同名的实例变量用外部类名.this.变量名 如果内部类中没有与外部类同名的变量,则可以直接用变量名访问外部类变量 成员内部类 2、外部类的非静态方法中: 直接创建对象即可访问 3、外部类的静态方法中: 建立外部类对象, 然后根据外部类对象建立内部类对象(特殊语法:外类对象,new), 访问内部类的方法 成员内部类 4、第三方类中: Outer out = new Outer(); Outer.Inner outin = out.new Inner(); outin.inner_f1(); 局部内部类 在方法中定义的内部类称为局部内部类。 特点: 1、与局部变量类似,局部内部类不能有访问说明符 2、它可以访问当前代码块内的常量,和此外部类所有的成员。 3、不可以定义静态变量 局部内部类 访问方式: 1、在内部类内部: 如果内部类没有与外部类同名的变量,在内部类中可以直接访问外部类的实例变量 可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的 如果内部类中有与外部类同名的变量,直接用变量名访问的是内部类的变量 用this.变量名访问的也是内部类变量 用外部类名.this.内部类变量名访问的是外部类变量 局部内部类 2、外部类的方法或第三方类的方法: 访问局部内部类必须先有外部类对象,然后调用方法 静态内部类(嵌套类) 将成员内部类声明为static 特点: 1. 静态内部类中可以定义静态或者非静态的成员 2. 要创建嵌套类的对象,并不需要其外围类的对象。 静态内部类(嵌套类) 访问方式: 1、内部类中: 静态内部类只能访问外部类的静态成员(包括静态变量和静态方法) 2、外部类中: 外部类访问内部类的静态成员:内部类.静态成员 外部类访问内部类的非静态成员:实例化内部类即可 静态内部类(嵌套类) 2、在第三方类中: 生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。 静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner(); 而不需要通过生成外部类对象来生成。 匿名内部类 匿名内部类就是没有名字的内部类。 适用情况: 只用到类的一个实例。 类在定义后马上用到。 类非常小(SUN推荐是在4行代码以下) 给类命名并不会导致你的代码更容易被理解。 匿名内部类 在使用匿名内部类时,要记住以下几个原则: 匿名内部类不能有构造方法。 匿名内部类不能定义任何静态成员、方法和类。 匿名内部类不能是public,protected,private,static。 只能创建匿名内部类的一个实例。 一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 * 1-* 1

文档评论(0)

共享文档 + 关注
实名认证
内容提供者

二级建造师持证人

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

领域认证该用户于2023年10月07日上传了二级建造师

1亿VIP精品文档

相关文档