java匿名类的用法
2015-07-21 19:28
681 查看
1.Java允许我们直接使用一个类的子类的类体创建一个子类对象
2.有时候创建子类对象时,除了使用父类的构造方法外还有类体,这个类体被认为是一个子类去掉类声明后的类体,称作匿名类。
3.匿名类是一个子类,它一定会继承某个类。匿名类没有类名,它们不能被引用,不能有匿名类声明对象,只能在创建时用New语句和父类的构造方法创建一个对象。
4.匿名类一定是内部类,匿名类一定可以访问外嵌类的成员变量和方法。
如果A是一个类,那么用A类的一个子类(匿名类)创建的对象如下
例如下列代码
上例中的匿名类等价于
当子类的类体比较简单时,可考虑用匿名类,此外匿名类一定是内部类,匿名类一定可以访问外嵌类的成员变量和方法。
2.有时候创建子类对象时,除了使用父类的构造方法外还有类体,这个类体被认为是一个子类去掉类声明后的类体,称作匿名类。
3.匿名类是一个子类,它一定会继承某个类。匿名类没有类名,它们不能被引用,不能有匿名类声明对象,只能在创建时用New语句和父类的构造方法创建一个对象。
4.匿名类一定是内部类,匿名类一定可以访问外嵌类的成员变量和方法。
如果A是一个类,那么用A类的一个子类(匿名类)创建的对象如下
new A(){ 匿名类的类体//是继承或重写的方法,去掉了类声明后的类体 }
例如下列代码
abstract class Speak {//抽象类 public abstract void Say();//抽象方法 } class Student { void f(Speak sp) { sp.Say(); } } public class Example6_2 { public static void main(String args[]) { Speak speak=new Speak() { //此处speak是上转型对象 public void Say() { System.out.println("大家好");//重写类Speak的Say方法 }//匿名类 }; speak.Say(); Student st=new Student(); st.f(new Speak() { public void Say() { System.out.println("你们好!"); } }); } }
上例中的匿名类等价于
class subSpeak extends Speak{//要继承Speak类 public void Say() { System.out.println("大家好");//重写类Speak的Say方法 } } subSpeak sub=new subSpeak();//sub就是Speak类的子类对象
当子类的类体比较简单时,可考虑用匿名类,此外匿名类一定是内部类,匿名类一定可以访问外嵌类的成员变量和方法。
相关文章推荐
- Ubuntu java 环境变量
- java反射机制入门3
- java的反射
- Java经典算法大全
- eclipse 内置注解设置
- java基础语法--01
- Eclipse中代码格式及类和方法等注释设置及对应快捷键
- Java中的private、protected、public和default的区别
- window8.1编译hadoop2 eclipse插件,并远程调试hadoop程序
- Java 二分法查找算法
- 用java 写 merge sort
- java 二叉树的查找方法
- struts2请求过程源码分析
- java 发送邮件
- 如何编译带有package的java文件
- Java监听器的用法(一):内部类监听器
- java之路——jdbc(一)基本的jdbc连接
- java编程接口(5) ------ button和button组
- java反射机制入门02
- ubutun14.04编译hadoop-2.6.0源码,并生成eclipse项目