首页 > 编程 > Java > 正文

JAVA四种嵌套类的特点及用法

2019-11-06 07:24:37
字体:
来源:转载
供稿:网友

嵌套类: 1.静态成员类 静态成员类是外围类的一个静态成员,遵守同样的可访问性规则 用法:a.作为公有的辅助类 内部类: 2.非静态成员类 语法上只和静态成员类的唯一区别是少一个static修饰符 a.它的每个实例都隐含着与外围类的一个实例相关联 b.在其实例方法内部可以调用外围实例上的方法,或者利用this构造获得外围实例的引用 用法:a.定义一个Adapter

public class MySet<E> extends AbstractSet<E>{ public Iterator<E> iterator(){ return new MyIterator(); } PRivate class MyIterator implements Itertor<E>{ ... } }

–如果嵌套类嵌套类的实力可以在它外围类的实例之外独立存在,这个嵌套类必须是静态成员类 –如果声明成员类不要求访问外围实例,就始终要把static放在他的声明中. 3.匿名类 当且仅当匿名类粗现在非静态环境中时,它才有外围实例 缺点:不能执行instanceof测试和任何命名类的其他事情 无法实现多个接口或扩展一个类;除了从他的超类型中继承得到之外,其客户端无法调用任何成员;由于匿名类出现在表达式中,他必须保持简短来保证程序的可读性(<10) 用法:a.动态创建函数对象Arrays.sort();

Arrays.sort(StringArray,new Comparator<String>(){// public int compare(String s1,String s2){// return s1.length()-s2.length();// }// }) b.创建过程对象(Runnable,Thread,TimerTask实例) c.声明在静态工厂方法的内部 4.局部类:拥有其他嵌套类的特点 在任何可以声明局部变量的地方都可以声明局部类,并遵守同样的作用域规则

总结:如果一个嵌套类需要在单个方法之外仍然可见,或者他太长了不适合放在方法内部,就使用成员类.如果成员类的每个实例都需要一个指向其外围实例的引用,就用静态成员类;否则,就做成静态的.如果这个嵌套类属于一个方法的内部,你只需要在一个地方创建实例,并且已经有了一个预置的类型可以说明这个类的特征,就要把它做成匿名类;否则,就做成局部类


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表