Java编程详细教程-7-高级类特性(下)课件_第1页
Java编程详细教程-7-高级类特性(下)课件_第2页
Java编程详细教程-7-高级类特性(下)课件_第3页
Java编程详细教程-7-高级类特性(下)课件_第4页
Java编程详细教程-7-高级类特性(下)课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高级类特性(下)单击此处编辑副标题样式目标掌握instanceof运算符以及对象的造型掌握如何定义内部类精通各种修饰符的适用范围instanceof运算符使用运算符instanceof可以得到对象的类型例:public class Personpublic class Teacher extends Personpublic class Testpublic static void main(String args)Person p;if(p instanceof Teacher) Teacher t=(Teacher)p;对象造型(Casting)所谓造型就是Java对象间的类型转换Java

2、的对象造型可以分为两种情况:自动造型强制造型在造型前可以使用instanceof运算符测试一个对象的类型对象的造型只用在有继承关系的对象之间内部类(inner class)允许一个类的定义出现在另一个类中,将处于另一个类中的“寄生类”称为“内部类”(inner class),也称为“类属类”这样的一组类在逻辑上是一个整体,内部类和外层封装它的类之间存在逻辑上的从属关系内部类对其封装类的内部成员有访问权限内部类示例public class Outer1 private int size; /* 定义一个内部类,名为 Inner */ public class Inner public void

3、doStuff() / 内部类可以访问外部类的私有属性 size+; public void testTheInner() Inner i = new Inner(); i.doStuff(); 实例化内部类实例化内部类的两种方法:-法一:Outer.Inner in=new Outer().new Inner();-法二:Outer o=new Outer();Outer.Inner I=o.new Inner();如果内部类是static的,也可以用下面方法:Outer.Inner in=new Outer.Inner();内部类特性(1)类的名字只能在定义的范围内使用,除非使用有效的全名

4、Inner类也可以定义在方法的内部。方法中final类型的局部变量,都可以被Inner类的方法访问。内部类特性(2)Inner class可以声明为抽象类 ,因此可以被其它的内部类继承。也可以声明为final的。和外层类不同,Inner class可以声明为private或protected;Inner class 可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量;非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员内部类中访问封装类的对象可以使用“封装类(封装类)的类名.this”来访问封装类(外

5、部类)的对象:oc.method(Outer.this);注意,如果在内部类中使用this,此时它表示的是内部类的对象,而不是外部类对象匿名内部类匿名内部类就是没有名字的内部类一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。在以下情况中,可以考虑使用匿名内部类:只用到类的一个实例。 类在定义后马上用到。 类非常小给类命名并不会导致你的代码更容易被理解。 匿名内部类的使用原则使用匿名内部类时的几个原则: 匿名内部类不能有构造方法。 匿名内部类不能定义任何静态成员、方法和类。 匿名内部类不能是public,pro

6、tected,private,static。 只能创建匿名内部类的一个实例。匿名内部类例子public interface InterfaceApublic void doSomething();-public class ClassApublic void methodA(InterfaceA ia)ia.doSomething();public class MainClasspublic static void main(String args) ClassA ca = new ClassA(); ca.methodA( new InterfaceA()public void doSomething() System.out.println(实现接口InterfaceA中的doSomething方法); );修饰符适用范围class属性方法构造器自由块内部类publicYYYYYprotected YYYY(Default)YYYYYYprivateYYYYfinalYY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论